【发布时间】:2010-10-16 06:46:51
【问题描述】:
我有一些代码使用了一些共享库(gcc 上的 c 代码)。编译时,我必须使用 -I 和 -L 显式定义包含和库目录,因为它们不在标准位置。当我尝试运行代码时,出现以下错误:
./sync_test
./sync_test: error while loading shared libraries: libsync.so: cannot open shared object file: No such file or directory
但是,执行以下操作,一切正常:
export LD_LIBRARY_PATH="/path/to/library/"
./sync_test
现在,奇怪的是,这只能工作一次。如果我再次尝试运行sync_test,我会得到同样的错误,除非我先运行导出命令。我尝试将以下内容添加到我的 .bashrc 中,但没有任何区别:
LD_LIBRARY_PATH="/path/to/library/"
【问题讨论】:
-
我认为所有这些建议都很糟糕——显然是 Linux 的一个错误。为什么编译时 L 路径没有传递给运行时?
-
您可以使用
-rpath设置路径,但这通常是不可取的,因为它会将该路径强加于其他系统 - 请参阅stackoverflow.com/a/695539/168175 的第二条评论
标签: c linux gcc shared-libraries ld