如何创建在每个发行版上运行的静态二进制文件?

时间:2013-02-12 21:34:44

标签: linux gcc g++ packaging

某些Linux应用程序(如supertuxkart或regnum online)具有静态二进制文件,下载后只需工作而无需安装任何共享库。在每个发行版。我该如何制作这样的应用程序?

2 个答案:

答案 0 :(得分:18)

确保所有资源都包含在可执行文件中并静态链接可执行文件:

gcc -o foo main.o -static -lbaz -lbar

然而,这也有缺点。查找动态链接。

答案 1 :(得分:0)

@ user1873947,工具“ ldd”告诉您 dynamic 库的一个库与其他库的依赖关系,而不告诉您 static 库。对于 static 库,请查看工具“ nm”,为您提供无法解析的符号名称(“函数名称”)。稍后,您可能会对工具“ objdump”感兴趣。如果您不立即知道缺少的函数来自哪个库,请检查是否在/ usr / include中声明的函数在某处。您可以使用工具“ grep”来执行此操作-但忽略符号名称的前导“ _”。然后,声明该文件的文件通常来自-dev软件包,该软件包还附带了相应的.a文件。