当存在同名共享库时,如何强制链接静态库
假设我有一个文件 main.cpp
,它使用 sin()
函数,该函数在 libmath
中定义。还假设我们在同一目录中同时拥有 libmath.a 和 libmath.so。现在,如果我发出命令 g++ -o main main.cpp -lmath
,Linux 的默认行为是链接到共享库 libmath.so
。我想知道有没有办法强制程序链接到静态库libmath.a
而不删除或移动共享库?
Suppose I have a file main.cpp
which uses sin()
function which is defined in libmath
. Also suppose that we have both libmath.a and libmath.so available in the same directory. Now if I issue the command g++ -o main main.cpp -lmath
the default behaviour of Linux is to link to the shared library libmath.so
. I want to know is there a way to force the program to link with the static library libmath.a
without deleting or moving the shared library?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要将 -static 传递给链接器,但仅限于您想要的特定库。例如:
You'll need to pass the -static to the linker, but only for particular libraries you want. e.g.:
如果您的链接器支持
-l:
您可以使用:If your linker supports
-l:<filename>
you may use:使用这个函数:
Use this function: