C 将共享库编译成程序?

C 将共享库编译成程序?,c,linux,gcc,shared-libraries,C,Linux,Gcc,Shared Libraries,我编写了一个程序,它使用安装在我的系统上的共享库。此库很少安装在其他系统上。如何编译程序,使库不需要安装在其他系统上?我有这个库的源代码。最好的办法是什么 其他系统当然有相同的体系结构和操作系统。将其编译为静态库并将其链接到可执行文件。将其编译为静态库并将其链接到可执行文件。尽管OP通过回答不同的问题解决了他的问题,但(至少)将共享库嵌入二进制文件的两种方法 没有可用的源代码 没有可用的编译器(或生成链) 静态链接不起作用,或者不明显,怎么办 为了保留内存布局-静态链接将更改它,并可能“唤醒”

我编写了一个程序,它使用安装在我的系统上的共享库。此库很少安装在其他系统上。如何编译程序,使库不需要安装在其他系统上?我有这个库的源代码。最好的办法是什么


其他系统当然有相同的体系结构和操作系统。

将其编译为静态库并将其链接到可执行文件。

将其编译为静态库并将其链接到可执行文件。

尽管OP通过回答不同的问题解决了他的问题,但(至少)将共享库嵌入二进制文件的两种方法

  • 没有可用的源代码
  • 没有可用的编译器(或生成链)
  • 静态链接不起作用,或者不明显,怎么办
  • 为了保留内存布局-静态链接将更改它,并可能“唤醒”隐藏的bug
  • 对于“永久链接”,LD_将库预加载到可执行文件中
第一个是statifier(开源,但限于x86和x86_64,仅限于目标代码)

我所知道的第二个是魔术貂(由同一个开发者开发)。它是封闭源代码的,但是开发人员对开源项目很友好,并且ermine具有支持更多平台的优势,并且能够在其虚拟文件系统中包含所有必要的数据文件


而且

尽管OP通过回答一个不同的问题解决了他的问题,但(至少)有两种方法可以将共享库嵌入到二进制文件中以备不时之需

  • 没有可用的源代码
  • 没有可用的编译器(或生成链)
  • 静态链接不起作用,或者不明显,怎么办
  • 为了保留内存布局-静态链接将更改它,并可能“唤醒”隐藏的bug
  • 对于“永久链接”,LD_将库预加载到可执行文件中
第一个是statifier(开源,但限于x86和x86_64,仅限于目标代码)

我所知道的第二个是魔术貂(由同一个开发者开发)。它是封闭源代码的,但是开发人员对开源项目很友好,并且ermine具有支持更多平台的优势,并且能够在其虚拟文件系统中包含所有必要的数据文件


而且

一个框架会有所帮助。这是在Windows中吗?Linux和C99使用gcc。一个框架会有所帮助。这是在Windows?Linux和C99中使用gcc的吗?请提供一个简短的示例?使用
ar
创建静态库,或者将
-static
传递到
gcc
以告诉它使用静态库?不用客气。我只需要
-static
选项。谢谢。我觉得没那么容易。很抱歉浪费您的时间。您能提供一个简短的示例吗?关于什么,使用
ar
创建静态库,或者将
-static
传递给
gcc
,告诉它使用静态库?不用客气。我只需要
-static
选项。谢谢。我觉得没那么容易。很抱歉浪费您的时间。谢谢您的建议-魔貂灯的试用版似乎适合我。谢谢您的建议-魔貂灯的试用版似乎适合我。