【发布时间】:2015-07-17 08:27:13
【问题描述】:
为什么不能重新编译 GLibc 关闭所有优化(即 -O0)?
尤其是这样做:
make CFLAGS='-O0 -w' CXXFLAGS='-O0 -w'
我明白了:
#error "glibc cannot be compiled without optimization"
【问题讨论】:
-
找到存储库,找到消息的来源,找到添加它的提交,然后阅读提交消息?
为什么不能重新编译 GLibc 关闭所有优化(即 -O0)?
尤其是这样做:
make CFLAGS='-O0 -w' CXXFLAGS='-O0 -w'
我明白了:
#error "glibc cannot be compiled without optimization"
【问题讨论】:
基本上:“glibc 是巫毒!”这个“所有库的库”在任何系统中都有一个非常特殊的位置,因为虚拟(?)整个系统中的其他一切都依赖于它。
因此,如果“有人”花时间阻止你“不优化”地编译这个库,我诚挚地邀请你相信他/她的话。 “这必须有一个[非常好的]理由。”
【讨论】:
当我用谷歌搜索错误时,第一个结果tells我就是为什么。
"在动态加载器(
_dl_start)的早期启动中,之前 PLT 的重定位,您不能进行函数调用。你必须内联 您将在早期启动期间使用的功能,或调用编译器 内置函数 (__builtin_*)。如果没有启用优化,GCC 将不会内联函数。早期 动态加载器的启动将通过 未重新定位的 PLT 和崩溃。”——Carlos O'Donell
【讨论】: