Chinaunix

标题: Linux下自定义服务启动失败的问题求助 [打印本页]

作者: shentar    时间: 2010-07-18 21:59
标题: Linux下自定义服务启动失败的问题求助
用C++编写了一个小工具,想让工具随操作系统启动。采用将该程序注册成系统服务的方式来实现。

编译选项:
g++  -fPIC -g -D_REENTRANT -I"/opt/ACE_wrappers" -c  -o "services.o" services.cpp
g++  -fPIC -g -D_REENTRANT -I"/opt/ACE_wrappers" -L"." -L"./" services.o -lACE -ldl -lrt -lpthread -o "servicetest"


使用:
chkconfig --add命令添加,设置启动级别为3和5。

但是由于程序依赖另外一个共享库,操作系统启动时,自定义的服务总是报加载动态库失败。手动使用service命令启动服务的时候也抱同样的错误。

# service sertest start
./servicetest: error while loading shared libraries: libACE-5.6.9.so: cannot open shared object file: No such file or directory


sertest文件的内容:
  1. 30 RETVAL=0
  2. 31
  3. 32 FTP_MON_SVR=/etc/init.d/ftpmoniter
  4. 33 FTP_MON_IMP=/tools/ftpmoniter/ftpmoniter.sh
  5. 34
  6. 35 start ()
  7. 36 {
  8. 37   cd /myprogs/servicetest/
  9. 38   ./servicetest &
  10. 39 }
  11. 40
  12. 41 stop ()
  13. 42 {
  14. 43   killall servicetest
  15. 44 }
  16. 45 case "$1" in
  17. 46   start)
  18. 47   start
  19. 48   ;;
  20. 49
  21. 50   stop)
  22. 51   stop
  23. 52   ;;
  24. 53
  25. 54   restart)
  26. 55   stop
  27. 56   start
  28. 57   ;;
  29. 58
  30. 59   *)
  31. 60   echo "usage: ftpmoniter start|stop|restart"
  32. 61
  33. 62 esac
  34. 63
  35. 64 exit $RETVAL
复制代码
使用:
/etc/init.d/sertest start
却可以正常启动。

不知道该如何解决
作者: samlumengjun    时间: 2010-07-19 10:51
编译的时候-L项指定绝对路径.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2