Go语言 cgo openwrt sdk 交叉编译报错 collect2: fatal error: cannot find ‘ld‘的解决办法

20 篇文章 2 订阅
7 篇文章 0 订阅

使用openwrt sdk交叉编译arm时报错如下

CGO_ENABLED=1 GOOS=linux GOARCH=arm GOARM=6 CC=arm-openwrt-linux-gcc CXX=arm-openwrt-linux-g++ AR=arm-openwrt-linux-ar go build -ldflags="-s -w" -o artifacts/zbpd-openwrt-linux-arm1176jzf-s+vfp
......
/usr/local/go/pkg/tool/linux_amd64/link: running arm-openwrt-linux-gcc failed: exit status 1
collect2: fatal error: cannot find 'ld'
compilation terminated.

原因是该工具链没有ld.gold而只有ld.bfd,因此添加环境变量

export CGO_CFLAGS=$CGO_CFLAGS" -fuse-ld=bfd"
export CGO_LDFLAGS=$CGO_LDFLAGS" -fuse-ld=bfd"
export GOGCCFLAGS=$GOGCCFLAGS" -fuse-ld=bfd"

之后编译则无报错。
另外,使用该sdk编译时,还需要设置STAGING_DIRPATH

PATH=$PATH:`pwd`/op19078-brcm2708/staging_dir/toolchain-arm_arm1176jzf-s+vfp_gcc-7.5.0_musl_eabi/bin/
export PATH
export STAGING_DIR=`pwd`/op19078-brcm2708/staging_dir/toolchain-arm_arm1176jzf-s+vfp_gcc-7.5.0_musl_eabi/
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值