从现有目标文件创建共享库

Max*_*rai 8 c++ makefile shared-libraries

我的IDE中有一个项目.我需要创建一个共享库来扩展.我不想使用共享库设置制作此项目的副本.有没有办法使用我现有项目中的目标文件(.o)构建共享库?据我了解,我可以为此编写一个makefile.

Tim*_*sch 13

我假设你在某种Unix上并且可能正在使用GNU工具链.在这种情况下,要创建适当的共享库,您需要使用与位置无关的代码标志(-fpic或-fPIC)编译代码,然后才能创建共享库.除非你的.o文件已经使用这些标志进行编译,否则你很可能不会得到一个可用的共享库.

如果它们已经编译为与位置无关的代码,通常g++ -shared ...应该这样做.

  • +1我忘了提到对象文件也需要fpic. (2认同)
  • @pajton - 猜猜之前被谁抓住了:). (2认同)

paj*_*ton 7

g++ -shared -fPIC -o myshared.so *.o