错误:交叉编译中使用的不安全标头/库路径:' - I / usr / include

时间:2017-05-17 16:48:35

标签: cross-compiling configure absolute-path buildroot

在集成到buildroot项目中时,vpp交叉编译失败,并出现以下错误:

ERROR: unsafe header/library path used in cross-compilation: '-I/usr/include

似乎已启用 oldincludedir 导出非gnu工具链,因此在配置过程中会产生此包含。

一旦buildroot项目添加了偏执的不安全路径检查选项,问题似乎很常见,如here所述:

>> >> This error appear if one of the following paths is used during the
>> >> cross-compilation:
>> >> "/lib"
>> >> "/usr/include"
>> >> "/usr/lib"
>> >> "/usr/local/include"
>> >> "/usr/local/lib"

如何在configure中排除 oldincludedir 生成或如何更改其值而不是

oldincludedir='/usr/include'

配置类似于 includedir 变量:

includedir='${prefix}/include'

1 个答案:

答案 0 :(得分:1)

有关发现偏执不安全路径检查的详细解释here但该链接似乎非常临时,因此副本也会在此答案中发布:

toolchain-external:用于警告不安全路径的仪器包装

CodeSourcery工具链有一个非常有趣的功能:他们警告说 使用不安全的头或库路径时的用户,即路径 这将导致主机头或库泄漏到构建中。

此提交在我们的外部工具链中添加了类似的功能 包装器,以便它可以与所有外部工具链一起使用,并且可以 也可以根据需要进行调整。默认情况下,外部工具链包装器 现在发出警告,如:

  arm-linux-gcc: WARNING: unsafe header/library path used in cross-compilation: '-I /usr/foo'
  arm-linux-gcc: WARNING: unsafe header/library path used in cross-compilation: '-L /usr/bleh'

但编译继续成功。然后可以很容易地进行grep 在他的构建日志中搜索此消息的出现。

可选地,如果 BR_COMPILER_PARANOID_UNSAFE_PATH 在 环境到非空值,外部包装器将改为 错误输出并中止编译。