You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为ARM VxWorks构建GCC交叉编译器的问题求助

构建arm-wrs-vxworks交叉编译器遇到的问题

我正尝试在x86-64 Linux主机(WSL中的Ubuntu-22.04,搭载GCC 11)上构建面向arm-wrs-vxworks的交叉编译器,但遇到了不少问题。我对交叉编译器经验有限,推测可能是简单配置问题。

我试过社区里分步构建GCC的方法,包括自动下载依赖、配置编译流程,但均未成功。执行以下步骤时,出现了与C++17标准相关的编译错误:

tar xzf gcc-4.9.4.tar.gz
cd gcc-4.9.4
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-4.9.4/configure --prefix=$HOME/GCC-4.9.4 --target=arm-wrs-vxworks
make -j
make install

我尝试了两种版本调整方案:

  • 升级目标GCC版本到8.1.0,保留主机GCC 11
  • 保留目标GCC 4.9.4,更换为搭载GCC 7的主机
    (注:最初尝试升级目标GCC到12.1.0,但发现该版本已取消VxWorks支持)

两种方案都绕过了C++17相关错误,但都出现了cannot compute suffix of object files错误。我尝试过调整LD_LIBRARY_PATH变量、切换各类配置选项、手动构建并安装目标为arm-wrs-vxworks的binutils,均无效果。即使在GCC配置中去掉--target选项构建原生GCC,最终也会出现缺少sys/ustat.h的错误。

我还尝试过crosstool-NG工具,但其不支持VxWorks目标平台。此外还查阅过GCC官方安装文档、crosstool-NG工具链构建文档、第三方交叉编译教程,但这些步骤要么直接失败,要么与我的需求不兼容。

我是否遗漏了什么明显的要点?(若需要更多信息以缩小问题范围,请告知。)


后续排查进展

  1. 查看objdir/arm-wrs-vxworks/libgcc/config.log后,发现WIND_BASE未定义的错误。将其设置为前缀路径后绕过了该问题,但随即出现-march=armv4: not found错误,最终仍存在相同的cannot compute suffix of object files错误。
  2. 删除并重新构建GCC编译目录,将WIND_BASE定义为前缀文件夹后,cannot compute suffix of object files问题终于解决,但出现缺少头文件<semLib.h>的错误,推测该文件与WIND_BASE密切相关。
  3. 将WIND_BASE替换为包含host和target子文件夹的平台头文件路径后,<semLib.h>问题得到解决。对头文件做了一些调整后,arm-wrs-vxworks-gcc可用,但仍缺少标准C++头文件(如<cstdio>),且arm-wrs-vxworks-g++无法正常工作,提示找不到libstdc++。

内容的提问来源于stack exchange,提问作者StardustGogeta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:35:12