首先,我使用-L../
标志来指定.so
中的../
文件。虽然它不起作用,但我将库复制到/usr/local/lib/
,删除-L
标志,重新编译,但它仍然无法正常工作。这是我的Makefile
:
CFLAGS = -std=c++11 -lstdc++ -Wall -I../src/ -L../
all:
$(CXX) $(CFLAGS) example.cpp -o example -ltest
库文件调用libtest.so
并放在../
中,并且编译成功,但在两种情况下运行时都得到error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory
。
答案 0 :(得分:1)
程序使用环境变量LD_LIBRARY_PATH
在成功编译和链接后搜索包含库的目录。
所以,如果你设置:
export LD_LIBRARY_PATH=/path/to/where/your/library/is:$LD_LIBRARY_PATH
程序应该运行。