[英]How can I force linking with a static library when a shared library of same name is present
假设我有一个文件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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.