更改系统范围的 GCC 编译选项,例如 -DFORTIFY_SOURCE、PIE 和 stack_protector

更改系统范围的 GCC 编译选项,例如 -DFORTIFY_SOURCE、PIE 和 stack_protector

这是我遇到的第一个 StackExchange 问题,如果它问错了地方(UNIX 和 Linux 与软件工程之类的地方?),请指出我的正确方向!

很久以前,我使用 Hardened Linux From Scratch 指南构建了一个系统(http://linuxfromscratch.org/hlfs/view/development/)。我正在构建另一个系统,因为我想运行一些应用程序,但我的旧系统不支持,并且我认为构建这个系统会更容易,也更有趣地面朝上。问题是 HLFS 指南和补丁已被搁置,该项目已经终止。

我喜欢这个项目通过添加特定标志来强化工具链,例如默认情况下 -D_FORTIFY_SOURCE=2、-fPIE -pie、-fstack-protector-all 和 --param=ssp-buffer-size=4 (http://linuxfromscratch.org/hlfs/view/development/chapter05/gcc-pass2.html)。

问题是,如果这些功能在我想要使用的 GCC 近版本(7.2.0 左右)中仍然相关,或者如何启用它们,我找不到任何指导,甚至找不到一致的答案。搜索显示 Fedora 项目 (https://fedoraproject.org/wiki/Security_Features?rd=Security/Features#Stack_Smash_Protection.2C_Buffer_Overflow_Detection.2C_and_Variable_Reordering)和Ubuntu(https://wiki.ubuntu.com/GccSsp)仍然有这些选项,或者在形式上与它们非常接近的选项“默认启用”,但我似乎找不到有关如何对正在构建的系统执行此操作的文档。

我唯一能想到的就是使用类似“alias gcc='gcc --options_go_here'”之类的东西,但如果我必须关闭某个选项,或者在类似的选项(如 -fpic)之间进行更改,这似乎会弄巧成拙-fPIC。

对于构建 gcc 有什么建议、指导或更好的搜索条件吗?

相关内容