【发布时间】:2016-10-15 16:25:26
【问题描述】:
我被Gentoo bug #580414 困扰。 简而言之,默认选项会误导 configure 导致不检测标准包含文件,因为某些标头包含以下代码:
#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0
# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
,而__OPTIMIZE__默认关闭,_FORTIFY_SOURCE默认开启,生成的警告被认为是错误,表示“stdint.h”,“ stdlib.h" 和许多其他的不存在。编译最终失败,我无法安装程序甚至升级 gcc 本身。
我是否可以简单地在环境变量或 /etc 目录中添加一些东西来为 每次调用 gcc 时打开 -O 或关闭 _FORTIFY_SOURCE 而无需编辑 gentoo 构建脚本?
在 /etc/portage/make.conf 中试过
EPATCH_USER_EXCLUDE='*10_all_default-fortify-source*'
CFLAGS="-O2 -O -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"
CFLAGS_FOR_BUILD="-O2 -O -U_FORTIFY_SOURCE"
没有任何改进。
【问题讨论】:
-
使用
/etc/portage/make.conf设置所需的CFLAGS和/或CXXFLAGS