假设我有一个main.cpp
文件,它使用了在libmath
定义的sin()
函数。 另外假设我们在同一个目录中都有libmath.a和libmath.so。 现在如果我发出命令g++ -o main main.cpp -lmath
,Linux的默认行为是链接到共享库libmath.so
。 我想知道是否有办法强制程序链接静态库libmath.a
而不删除或移动共享库?
您需要将-static传递给链接器,但仅限于特定的库。 例如:
g++ -o main main.cpp -Wl,-Bstatic -lmath -Wl,-Bdynamic
如果你的链接器支持-l:<filename>
你可以使用:
g++ -o main main.cpp -l:libmath.a
使用这个功能:
g++ -o main main.cpp /path_to/libmath.a