当存在同名共享库时,如何强制链接到静态库

时间:2010-12-21 14:13:58

标签: linux gcc g++ ld

假设我有一个文件main.cpp,它使用sin()中定义的libmath函数。还假设我们在同一目录中同时提供libmath.a和libmath.so。现在,如果我发出命令g++ -o main main.cpp -lmath,Linux的默认行为是链接到共享库libmath.so。我想知道有没有办法强制程序与静态库libmath.a链接而不删除或移动共享库?

3 个答案:

答案 0 :(得分:25)

您需要将-static传递给链接器,但仅适用于您想要的特定库。 e.g:

g++ -o main main.cpp -Wl,-Bstatic -lmath -Wl,-Bdynamic

答案 1 :(得分:9)

如果您的链接器支持-l:<filename>,您可以使用:

g++ -o main main.cpp -l:libmath.a

答案 2 :(得分:5)

使用此功能:

g++ -o main main.cpp /path_to/libmath.a