【问题标题】:shared library under ubuntuubuntu下的共享库
【发布时间】:2010-04-14 10:15:06
【问题描述】:
我在 ubuntu 下使用 make 编译了 srp-2.1.2,它创建了一个文件 libsrp.a。谁能告诉我如何使用 libsrp.a 作为共享库?我想通过使用 dllimport 在 ubuntu 下的 c# 文件中使用 libsrp。请告诉我 libsrp.a 文件的含义。
谢谢
好的,当我使用 nm -D libsrp.a
然后我有
c2@ubuntu:~/Desktop/srp-2.1.2/libsrp$ nm -D libsrp.a
t_client.o:
nm: t_client.o: 无符号
请告诉我如何获得所有符号。
谢谢
【问题讨论】:
标签:
c#
ubuntu
pinvoke
single-responsibility-principle
【解决方案1】:
libsrp.a 文件是一个静态库;共享库将被称为libsrp.so。 Here 有一个答案描述了一种从静态库构建共享库的方法(虽然我自己从来没有这样做过,所以不能保证它有效 - 祝你好运!)
更新:
将nm 与-D 参数一起使用会要求动态符号(查看man nm) - 在我与该人相关的问题中,他正在使用-D,因为他在 上调用nm共享库。你的 libsrp.a 是一个静态库,所以要查看你应该做的符号
nm libsrp.a
但是,我认为您不需要查看符号即可使用解释如何获取共享库的答案;如果答案是正确的,您应该只需要使用正确的参数调用gcc。我想一旦你有了共享库,你就可以使用nm 来查看它是否有你期望的符号;在这种情况下,您将需要-D 参数:
nm -D libsrp.so