我想使用共享库(位于自定义目录中)到可执行文件中。

我已经创建了这个生成文件

all: SayHello

SayHello: compiledObjects/SayHello.o myLib/libNames.so
    g++ compiledObjects/SayHello.o -o SayHello -Icommons -LmyLib -lNames


compiledObjects/SayHello.o: SayHello.cpp
    g++ -c SayHello.cpp -o compiledObjects/SayHello.o

myLib/libNames.so: commons/Names.cpp commons/Names.h
    g++ -shared -fPIC commons/Names.cpp -o myLib/libNames.so

正确创建可执行文件和共享库实际上我可以使用此命令执行程序
LD_LIBRARY_PATH=/custom/path/to/lib/myLib/libNames.so
./SayHello

如何不指定LD_LIBRARY_PATH来执行./SayHello

我没有使用任何IDE,但我在Linux上。

最佳答案

使用-rpath选项链接可执行文件。有关更多信息,请参见ld(1)手册页。

附言您的makefile似乎有一个错误。如果您成功对程序进行了make编码,然后立即再次运行make,则即使没有任何更改,您的makefile仍将尝试再次重新编译该程序。

毕竟,makefile的全部目的是避免进行不必要的编译。
SayHello.o构建目标应为compiledObjects/SayHello.o

关于c++ - 在自定义目录中找不到C++共享库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35891016/

10-15 06:41