我是 makefile 的新手;所以,如果我的问题很琐碎,请接受我的道歉。
问题1:-L和-l选项有什么区别
问题2:如何提供一些库的完整路径?例如,以下 makefile 中提到的“libeng”和“libmx”位于 {MATLABROOT}/bin/glnxa64
# root directory of MATLAB installation
MATLABROOT="/usr/local/MATLAB/R2011b"
all: engdemo
engdemo:
g++ ${MATLABROOT}/extern/examples/eng_mat/engdemo.cpp -o engdemo \
-I${MATLABROOT}/extern/include \
-L${MATLABROOT}/extern/lib -llibeng -llibmx
clean:
rm -f engdemo *.o
更新: 以下 makefile 作品:
# root directory of MATLAB installation
MATLABROOT="/usr/local/MATLAB/R2011b"
all: engdemo
engdemo:
g++ ${MATLABROOT}/extern/examples/eng_mat/engdemo.cpp -o engdemo \
-I${MATLABROOT}/extern/include \
#-L${MATLABROOT}/extern/lib -llibeng -llibmx
-L${MATLABROOT}/bin/glnxa64 -llibeng \
-L${MATLABROOT}/bin/glnxa64 -llibmx
clean:
rm -f engdemo *.o
我发现以下关于链接库的链接非常有用: http://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html
去阅读文档通常是很好的建议,但是当它不起作用时你会怎么做。以上这些回答,至少是居高临下的。
我在用 g++ -l:/usr/local/lib/libname.so.2.70 lib 确实存在。但是带有 -v 选项的 g++ 说找不到它。
我尝试了很多名字,但没有任何效果
真正的答案将不胜感激