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

发布于 2024-10-08 07:37:09 字数 280 浏览 9 评论 0原文

假设我有一个文件 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一桥轻雨一伞开 2024-10-15 07:37:09

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

g++ -o main main.cpp -Wl,-Bstatic -lmath -Wl,-Bdynamic

You'll need to pass the -static to the linker, but only for particular libraries you want. e.g.:

g++ -o main main.cpp -Wl,-Bstatic -lmath -Wl,-Bdynamic
草莓酥 2024-10-15 07:37:09

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

g++ -o main main.cpp -l:libmath.a

If your linker supports -l:<filename> you may use:

g++ -o main main.cpp -l:libmath.a
樱娆 2024-10-15 07:37:09

使用这个函数:

g++ -o main main.cpp /path_to/libmath.a

Use this function:

g++ -o main main.cpp /path_to/libmath.a
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文