从现有目标文件创建共享库
我的 IDE 中有一个项目。我需要创建一个共享库以在扩展中使用。我不想使用共享库设置复制该项目。有没有办法使用我现有项目中的目标文件(.o)构建共享库?据我了解,我可以为此编写一个 makefile。
I have a project in my IDE. I need to make a shared library of it to use in extensions. I don't want to make a copy of this project with shared-library settings. Is there any way to build a shared library using the object files (.o) from my already existing project? As I understand, I can write a makefile for this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我假设您使用的是某种 Unix,并且可能正在使用 GNU 工具链。在这种情况下,要创建正确的共享库,您需要使用与位置无关的代码标志(-fpic 或 -fPIC)编译代码,然后才能创建共享库。除非您的 .o 文件已经使用这些标志进行了编译,否则您很可能不会得到一个可以工作的共享库。
如果它们已经编译为与位置无关的代码,则通常的
g++ -shared ...
应该可以解决问题。I assume you're on some sort of Unix and are probably using the GNU toolchain. In that case, to create a proper shared library, you'd need to compile your code using the position-independent code flags (-fpic or -fPIC) before you can create a shared library. Unless your .o files are already compiled with those flags, chances are you won't end up with a working shared lib.
If they already are compiled for position independent code, the usual
g++ -shared ...
should do the trick.g++ -shared -fPIC -o myshared.so *.o
g++ -shared -fPIC -o myshared.so *.o