gcc -fno-builtin; -flto

为什么80%的码农都做不了架构师?>>>   hot3.png

 -fno-builtin

    不承认不以__builtin_开头的函数为内建(built-in)函数。

    gcc一般会生成特定的代码更有效地处理某一内建(built-in)函数,例如,alloca调用可能会编程单指令,该指令能够直接调整堆栈;memcpy调用可能编程内联(inline)的复制循环。这最后的代码常常是小而快的。但是由于这个函数调用不会再以原来的样子出现,所以你不能设置断点(breakpoint)在这些条用上。你也不能够改变这个函数的行为通过调用不同的库。另外,当一个函数被作为一个内建(built-in)函数时,gcc可以生成一些与这个函数有关的警告信息当你调用这个函数时。

    使用“-fno-builtin-function’选项,仅仅是不把function这个函数当作内建(built-in)函数,function这个函数不能够以"__builtin_"开头。如果一个函数不是以内建(built-in)函数名命名的,那么这个选项(-fno-builtin-function)是无效的。没有对应的“-fbuiltin-function”选项,当使用“-fno-builtin”或“-ffreestanding”选项时,你又想有选择性的使用内建(built-in)函数时,你可以定义宏(macros),例如:

                    #define abs(s)        __builtin_abs((n))

                    #define strcpy( d, s)  __builtin_strcpy( (d), (s) )


-flto[=n]  

        运行标准的连接时间优化。

转载于:https://my.oschina.net/saly/blog/130931

你可能感兴趣的:(gcc -fno-builtin; -flto)