Compile shared library into a program?

杀马特。学长 韩版系。学妹 提交于 2019-12-02 19:54:15

问题


I wrote a program, that uses a shared library installed on my system. This library is seldom installed on other systems. How do I compile my program so that the library doesn't need to be installed on other systems? I have the source code for the library available. What's the best way?

The other systems of course have the same architecture and OS.


回答1:


Compile it as a static library and link that into the executable.




回答2:


Though the OP had solved his problem by answering a different question, there are (at least) two ways to wedge a shared library into your binary in case

  • there is no source code available
  • there is no compiler (or build-chain) available
  • static link does not work or it's not obvious how do it
  • to preserve memory layout - static link will change it and may "wake-up" hidden bugs
  • for "permanent link" LD_PRELOAD library into executable

The first is statifier (open source but limited to x86 and x86_64 and only object code)

The second that I know of is magic ermine (by the same developer). It is closed source, but the developer is friendly to opensource projects and ermine has the advantage of supporting more platforms as well as the ability to include all necessary data files within its virtual file system.

http://statifier.sourceforge.net/ and http://www.magicermine.com/



来源:https://stackoverflow.com/questions/6901046/compile-shared-library-into-a-program

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!