需要GLibc优化

bad*_*ack 4 gcc glibc libc

为什么不能重新编译GLibc关闭所有优化(即-O0)?

特别是这样做:

make CFLAGS='-O0 -w' CXXFLAGS='-O0 -w'
Run Code Online (Sandbox Code Playgroud)

我明白了:

 #error "glibc cannot be compiled without optimization"
Run Code Online (Sandbox Code Playgroud)

Meh*_*dad 7

如果你真的只是谷歌的错误,第一个结果告诉你究竟为什么.

"在动态加载器(_dl_start)的早期启动中,在重新定位PLT之前,你不能进行函数调用.你必须内联在早期启动时使用的函数,或者调用编译器builtins(__builtin_*).

如果未启用优化,GCC将不会内联函数.动态加载器的早期启动将通过未定位的PLT进行函数调用并崩溃." - Carlos O'Donell

  • 为什么不添加内联选项(如 -finline-functions 和 -finline-small-functions)并关闭其他优化?我试过了,但无论如何都行不通。 (2认同)

Mik*_*son 2

基本上:“glibc巫术! ”这个“所有库中的库”在任何系统中都具有非常特殊的地位,因为实际上(?)整个系统中的所有其他内容都依赖于它。

因此,如果“有人”花时间阻止“未经优化”地编译这个库,我诚挚地邀请您相信他/她的话。“一定有一个[非常好的]理由。”