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

标签 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

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

非常感谢您的任何建议,

最佳答案

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

参见 Program Library HOWTO (3.5. 安装和使用共享库)获取更多信息

关于将应用程序复制到另一台机器,找不到共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573679/

相关文章:

c - Linux aio(不是 posix)例子?

C. 二维数组填字游戏类程序

c - btree 实现中的段错误

java - Android如何添加动态库?

linux - 在 ELF 库文件名中,主要版本和次要版本在兼容性方面有多重要?

c++ - 是否可以从代码中获取依赖库的位置

c - 即使我在主内存中还有很多空间,realloc 也会失败

c - 如何为 SWIG 创建接口(interface)文件

c++ - 构建新库时包含库中的头文件

c - 是否可以在 Mac OSX 上创建 Window 或 Linux 可用的 native 库(DLL 和 SO)?