在 Linux 中,我如何判断我正在链接到静态库还是动态库?

发布于 2024-10-05 05:37:33 字数 182 浏览 2 评论 0原文

我有一个同名的静态库和动态库:libclsocket.a 和 libclsocket.so 当我指定要链接到的库时,我只需输入 -lclsocket 作为库。我的程序符合要求并且运行得很好,但是我使用的是什么库?静态库还是动态库?我想给我的朋友我的程序,但我不确定是否需要在发行版中包含这些库。 C++、Codelite、pcLinuxOS 2010

I have a static and a dynamic library with the same name: libclsocket.a and libclsocket.so When I specify what library I want to link to i simply enter -lclsocket as the library. My program complies and runs perfectly fine, but what library am I using? the static library or the dynamic library? I want to give my friend my program, and I'm not sure If i need to include the libraries in the release. C++, codelite, pcLinuxOS 2010

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

你的心境我的脸 2024-10-12 05:37:33

您可以尝试在可执行文件上运行 ldd 并查看是否在依赖项列表中检测到随附的 .so。

ldd 手册页位于此处

You can try running ldd on the executable and seeing if the accompanying .so is being detected as required in the list of dependencies.

ldd man page is here.

转身以后 2024-10-12 05:37:33

如果使用 -static 标志,所有组件都将变为静态。并且 -l 可能包含共享库。因此,指定静态库文件名(例如,使用 /usr/lib/libfoo.a ,不添加 -l ),应该可以达到预期的效果。

If you use the -static flag, all components will be made static. And -l may include shared libraries. So specifying the static library filename (e.g. with /usr/lib/libfoo.a for example, no -l prepended), should get you the desired effect.

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