【发布时间】:2015-04-06 09:01:30
【问题描述】:
我是 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
【问题讨论】:
-
这些是 GCC 选项,而不是 Make 选项。您可以通过阅读手册了解它们。
-
@OliverCharlesworth 谢谢。我能够修改。
-
您通常不会在
-l选项之后包含文件名的“lib”部分。例如-llibmx通常写成-lmx。我很惊讶前者完全有效。
标签: g++