繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM