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