我有一些使用某些共享库的代码(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,除非先运行export命令,否则会出现相同的错误。我尝试将以下内容添加到我的.bashrc中,但没有什么区别:
LD_LIBRARY_PATH="/path/to/library/"
采用
export LD_LIBRARY_PATH="/path/to/library/"
否则,它将仅对bash可用,而对您启动的任何程序均不可用。
-R/path/to/library/在链接时尝试标记,它将使程序在该目录中显示,并且您无需设置任何环境变量。
-R/path/to/library/
编辑:看起来-R只是Solaris,而您在Linux上。
-R
另一种方法是将路径添加到/etc/ld.so.conf并运行ldconfig。请注意,这是全局更改,将应用于所有动态链接的二进制文件。
/etc/ld.so.conf
ldconfig