链接静态库而不是动态

时间:2011-12-06 18:42:16

标签: c++ makefile gnu-make

我有一个名为FOO的目录,它有X.a和X.so。我只想选择X.a. 所以在我的makefile中我使用以下内容链接它

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ $< -static -lX

但是当我这样做时,我收到以下错误

/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc

如何正确完成。一种方法是给出X.a的abs路径。还有其他方法吗?

2 个答案:

答案 0 :(得分:2)

试试这个:

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ $< -Wl,-Bstatic -lX -Wl,-Bdynamic

答案 1 :(得分:0)

如果我正确阅读ld的文档,则不必指定绝对路径,但可以使用其全名来指定库:

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ $< -l:X.a