将应用程序复制到另一台机器,找不到共享库

时间:2010-08-26 09:15:34

标签: c shared-libraries

gcc 4.4.3 c89 linux

我正在使用log4c并将inc和lib放在以下目录中

/home/jeff/projects/gateway/tools/log4c/inc
/home/jeff/projects/gateway/tools/log4c/lib

在我的Makefile中,我指定了inc和lib路径:

INC_PATH = -I tools/log4c/inc
LIB_PATH = -L tools/log4c/lib
LIBS = -llog4c

在我的lib目录中,我有以下共享库:

lrwxrwxrwx 1 root root     17 2010-08-26 15:57liblog4c.so -> liblog4c.so.3.1.0
lrwxrwxrwx 1 root root     17 2010-08-26 15:57 liblog4c.so.3 -> liblog4c.so.3.1.0
-rw-r--r-- 1 root root 100180 2010-08-26 15:55 liblog4c.so.3.1.0

我在我的开发机器上编译我的应用程序,然后将二进制和工具目录复制到测试机器

因此,当我在测试机器上执行二进制文件时,我收到以下错误:

./app: error while loading shared libraries: liblog4c.so.3: cannot open shared object file: No such file or directory

但是,在我的开发机器上一切正常,它具有相同的目录结构,即

开发机器:

/projects/gateway/app
/projects/gateway/tools/log4c/inc
/projects/gateway/tools/log4c/lib

试验机:

/projects/gateway/app
/projects/gateway/tools/log4c/inc
/projects/gateway/tools/log4c/lib

所以我想知道为什么它找不到共享库。

非常感谢任何建议,

1 个答案:

答案 0 :(得分:2)

/projects/gateway/tools/log4c/lib应该放到/etc/ld.so.conf(之后调用/ sbin / ldconfig)或LD_LIBRARY_PATH shell变量,这样动态链接器就会知道在哪里搜索所需的共享库。

有关详细信息,请参阅Program Library HOWTO(3.5。安装和使用共享库)