g++共享库仅链接当前目录中的链接

g++ shared library only links in current directory

本文关键字:链接 当前目录 共享 g++      更新时间:2023-10-16

我正试图用我在另一个目录中构建的库编译一个C++程序(在Linux和OSX上)

$ g++ -I./include -L./lib src/main.cpp -lale -o proj

"ale"只是我正在使用的库(./lib/libale.so中的libale.so)

它编译了所有内容,但当我运行它时,我会得到以下错误:

./proj: error while loading shared libraries: libale.so: cannot open shared object file: No such file or directory

但是,如果我将libale.so放在与可执行文件相同的目录中(或添加符号链接),它确实有效。我正在查找一些解决方案,其中一个建议是设置LD_LIBRARY_PATH。但是,我宁愿在编译期间直接链接路径。有办法做到这一点吗?

我找到的答案是添加以下标志:

-Wl,-rpath=./lib

然而,这在OS X上不起作用。我最终只是在OS X版本中使用了符号链接,但这不是最佳解决方案。