【问题标题】:Cross-compiling for linux arm/7: clang error: argument unused during compilation '-marm'linux arm/7 的交叉编译:clang 错误:编译“-marm”期间未使用的参数
【发布时间】:2021-12-07 03:40:36
【问题描述】:

是什么原因,如何解决?请..

cmd : CGO_ENABLED=1 GOOS=linux GOARCH=arm GOARM=7 go build

输出:

# runtime/cgo
clang: error: argument unused during compilation: '-marm' [-Werror,-Wunused-command-line-argument]
  • 操作系统:macOS Big Sur
  • Golang 版本:go1.17 darwin/amd64

【问题讨论】:

标签: go cgo


【解决方案1】:

阅读fine manual

交叉编译时,必须指定一个 C 交叉编译器供 cgo 使用。在使用 make.bash 构建工具链时,您可以通过设置通用 CC_FOR_TARGET 或更具体的 CC_FOR_${GOOS}_${GOARCH}(例如 CC_FOR_linux_arm)环境变量来执行此操作,或者您可以设置 CC 环境变量任何时候运行go 工具。

所以你需要为 CGo 指定交叉编译器,例如像这样:

CC=arm-linux-gnueabihf-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm GOARM=7 go build

对于 C++ 代码,还要添加 CXX=arm-linux-gnueabihf-g++

您需要安装 gcc-arm-linux-gnueabihflibc6-dev-armhf-cross 软件包才能使上述工作正常运行(在 Linux 上,不了解 Mac)。

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 2015-10-21
    • 2014-03-14
    • 2011-08-04
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多