这个我知道,试过好多组合,不知道为什么whole-archive不好使,只好手动链接符号。 windoze 发表于 2015-08-06 14:17 static/image/common/back.gif
家里有一个小NAS盒子,用的是一个赛扬的嵌入式Linux系统,昨天心血来潮想给它写点代码,然后就掉进一个天坑 ...
qnap?:luya: 回复 12# 流氓无产者
靠,这都被你发现了…… {:yxh110:} 看了这篇文章,感觉自己写的C/C++和猫哥用的不是一种语言。
新手码农,路漫漫其修远兮 glibc不支持静态链接?头一次听说这个,我之前用静态链接的方式编译过不少东西,在一个只实现了系统调用的模拟器上跑。
所以我认为LZ理解错了。 回复 15# zhaohongjian000
redhat上有glibc-static包,编译连接倒是能过,但iconv/NSS/dlopen之类的东西都会出问题,当然你的程序里如果不用这些东西倒也无所谓,可我还是要用gethostbyname滴……
大多数小嵌入系统上用的都是eglibc/uclibc/musl这类兼容libc,这些都是可以静态链接的,但我运气比较差…… 回复 16# windoze
你不能指望用了dlopen这种东西还能静态链接,NSS也和静态链接冲突。我工具链全手工编的,没遇到什么问题,当然程序比较简单。
静态链接在一些公司是为了应对服务器有新有旧,系统版本不一的情况,不过确实用到的情况少,一些平台已经不打包静态链接的glibc了。 本帖最后由 zhaohongjian000 于 2015-08-07 17:33 编辑
另外,eglibc和glibc没有实质区别。
eglibc产生的主要原因是因为当时glibc的maintainer不受欢迎,有人甚至在bug tracker里面提bug要RH开了他。
同时,eglibc甚至把“友好的上游”作为一个特性。后来glibc的maintainer换了,eglibc这帮哥们自己就回去了,
现在eglibc已经停止开发了。
补充:
这个bug的链接:https://sourceware.org/bugzilla/show_bug.cgi?id=10134
2014年3月标记为fixed,不过印象里应该更早一些。 回复 17# zhaohongjian000
其实大部分程序静态链接一下都没什么问题的,你看1楼的内容,我说的是“使用C++11 thread”的程序静态链接会出状况。
PS. 理论上说静态链接和dlopen没有冲突,而且确实存在libdl.a这种东西,有办法让一个静态链接的程序dlopen动态库(虽然自动符号解析不能用,必须手动dlsym),真正打架的是rtld。 顶一个,猫哥V5
页:
1
[2]