C 正在将应用程序复制到另一台计算机,找不到共享库

C 正在将应用程序复制到另一台计算机,找不到共享库,c,shared-libraries,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目录中

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
(call/sbin/ldconfig after)或
ld\u LIBRARY\u PATH
shell变量中,以便动态链接器知道在哪里搜索所需的共享库


有关更多信息,请参见(3.5.安装和使用共享库)

如何使用rpath。我问的原因是因为用户不知道如何配置系统。我只给他们二进制文件,客户只想运行应用程序。谢谢。是的,使用
rpath
也是一个选项,您只需输入库的有效路径(对于开发、测试和生产)。如果它是相对的,则必须从指定的目录运行该程序,该目录中的路径将是有效的。