我想使用共享库(位于自定义目录中)到可执行文件中。
我已经创建了这个生成文件
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/