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

use*_*009 30 linux gcc g++ ld

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

nos*_*nos 27

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

g++ -o main main.cpp -Wl,-Bstatic -lmath -Wl,-Bdynamic
Run Code Online (Sandbox Code Playgroud)


Dmi*_*kov 9

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

g++ -o main main.cpp -l:libmath.a
Run Code Online (Sandbox Code Playgroud)


kar*_*lip 5

使用此功能:

g++ -o main main.cpp /path_to/libmath.a
Run Code Online (Sandbox Code Playgroud)