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

使用Clang从x86_64交叉编译GNU which到ARM失败求助

解决Clang交叉编译GNU which至ARM架构失败的问题

问题根源分析

你的configure命令存在三个关键错误:

  1. -target参数未正确传递给Clang:你把-target arm-linux-gnueabi作为configure的独立参数,而非Clang的命令参数,导致configure并未让Clang知晓目标架构。
  2. 缺失--host参数:configure需要--host来明确目标运行环境,否则会默认使用当前主机(x86_64)的配置生成Makefile。
  3. LD变量设置错误:LLVMgold.so是链接器插件,不是可执行链接器程序,直接设置LD为该文件会导致链接阶段无法正确调用ARM架构的链接逻辑。

正确操作步骤

先清理旧编译产物避免干扰:

make clean && rm -rf config.log config.status

然后执行以下configure命令(注意参数格式):

./configure --host=arm-linux-gnueabi \
  CC="/home/anon/Documents/llvm/llvm-project/build/bin/clang -target arm-linux-gnueabi" \
  RANLIB=/home/anon/Documents/llvm/llvm-project/build/bin/llvm-ranlib \
  LDFLAGS="-fuse-ld=gold"

参数说明

  • --host=arm-linux-gnueabi:告知configure目标程序将运行在ARM架构的gnueabi环境下,触发交叉编译配置逻辑。
  • CC="clang -target...":用引号将编译器及其参数包裹,确保configure调用Clang时自动带上目标架构参数,强制生成ARM代码。
  • LDFLAGS="-fuse-ld=gold":告诉Clang使用gold链接器,无需单独设置LD变量(Clang会自动匹配对应架构的gold链接器)。

验证结果

编译完成后再次执行:

file which

输出应显示为ARM架构的ELF文件,与你用GCC交叉编译的结果类似。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:51