为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工具链构建文档、第三方交叉编译教程,但这些步骤要么直接失败,要么与我的需求不兼容。
我是否遗漏了什么明显的要点?(若需要更多信息以缩小问题范围,请告知。)
后续排查进展
- 查看
objdir/arm-wrs-vxworks/libgcc/config.log后,发现WIND_BASE未定义的错误。将其设置为前缀路径后绕过了该问题,但随即出现-march=armv4: not found错误,最终仍存在相同的cannot compute suffix of object files错误。 - 删除并重新构建GCC编译目录,将
WIND_BASE定义为前缀文件夹后,cannot compute suffix of object files问题终于解决,但出现缺少头文件<semLib.h>的错误,推测该文件与WIND_BASE密切相关。 - 将
WIND_BASE替换为包含host和target子文件夹的平台头文件路径后,<semLib.h>问题得到解决。对头文件做了一些调整后,arm-wrs-vxworks-gcc可用,但仍缺少标准C++头文件(如<cstdio>),且arm-wrs-vxworks-g++无法正常工作,提示找不到libstdc++。
内容的提问来源于stack exchange,提问作者StardustGogeta
相关产品推荐
相关产品推荐

