【发布时间】:2013-07-16 19:40:25
【问题描述】:
在 Ubuntu 12.04.1 LTS 中,我使用以下代码创建了一个 .so 库文件:
g++ -c -Wall -Werror -fPIC someCode.cpp
g++ -shared -o libSomeCode.so someCode.o
我需要在可执行文件中使用该库文件。但是在运行 .exe 时找不到 .so 文件。所以我必须将库复制到/usr/lib/。我尝试使用这个命令(没有成功):
export LD_LIBRARY_PATH=/home/personalFolder/Desktop/codeFolder:$LD_LIBRARY_PATH
有没有办法避免将 .so 复制到 /usr/lib/?
提前致谢。
【问题讨论】:
-
LD_LIBRARY_PATH方法应该可以工作。设置变量后,您是否在同一个 shell 中运行了可执行文件?另外,当您说.exe时,您指的是为您的平台编译的可执行文件,对吗?不是 Windows 可执行文件..? -
好吧,在 shell 中手动设置 LD_LIBRARY_PATH 后它可以工作,但是当语句位于 makefile 中时它会失败。我尝试使用 ldconfig 但它需要 root 权限(我正在避免它们)
-
你可以试试
-rpath:stackoverflow.com/a/695684/1538531 -
好的,但是我得到了:cc: error: unrecognized option ‘-rpath’
-
如果它在 makefile 配方中,那么您必须将它放在 同一 shell 实例上。这可以通过放置一个'; \' 在调用程序之前设置 LD_LIBRARY_PATH 行的末尾。您最好对应用程序的链接使用 rpath 设置,以便它可以找到库。