在 Linux 中,我如何判断我正在链接到静态库还是动态库?
我有一个同名的静态库和动态库: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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以尝试在可执行文件上运行 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.
如果使用
-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.