35

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

4

3 回答 3

30

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

g++ -o main main.cpp -Wl,-Bstatic -lmath -Wl,-Bdynamic
于 2010-12-21T14:17:32.003 回答
13

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

g++ -o main main.cpp -l:libmath.a
于 2010-12-21T14:39:55.323 回答
5

使用这个功能:

g++ -o main main.cpp /path_to/libmath.a
于 2010-12-21T14:20:22.990 回答