找回密码
 注册
查看: 1238|回复: 9

怎么把一个程序编译成静态的版本?

[复制链接]
发表于 2006-8-5 12:05:21 | 显示全部楼层 |阅读模式
怎么把一个程序编译成静态的版本?
不依赖于别的动态连接库文件
发表于 2006-8-8 23:21:37 | 显示全部楼层
关注
回复

使用道具 举报

发表于 2006-8-8 23:28:19 | 显示全部楼层
gcc -static
回复

使用道具 举报

 楼主| 发表于 2006-8-8 23:32:48 | 显示全部楼层
楼上能否详细写啊?谢谢
回复

使用道具 举报

发表于 2006-8-9 01:29:43 | 显示全部楼层
帮助里没有?
回复

使用道具 举报

发表于 2006-8-9 08:57:33 | 显示全部楼层
就是在连接命令加上 -static 参数
回复

使用道具 举报

 楼主| 发表于 2006-8-9 13:01:21 | 显示全部楼层
你的意思是这样?
LDFLAGS="-all-static"
回复

使用道具 举报

 楼主| 发表于 2006-8-11 19:29:08 | 显示全部楼层
export CC="gcc -static -s"
可耻的失败鸟
不用-static时能发现的库反倒认不到了
回复

使用道具 举报

发表于 2006-8-16 18:59:57 | 显示全部楼层
一般可以修改一下Makefile文件(./configure完成后),
在CFALGS和CXXFLAGS变量中加入-static 选项:

CFALGS = " -static"
CXXFLAGS= " -static"

如果是自己写的小程序,不需要Make来管理编译,只要直接在gcc后面加上-static就可以了.

gcc -static file.c
产生的a.out就是静态连接的.

另外有一些软件的configure程序本身就有此类选项.
比如mysql 的configure程序就有 --all-static 之类的选项,加上就自动编译成静态的了。
回复

使用道具 举报

 楼主| 发表于 2006-8-16 23:22:38 | 显示全部楼层
sir上有人说是cygwin没有静态库的原因
我是在cygwin上编译fontforge
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-6 19:23 , Processed in 0.032631 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表