加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

从Windows到ARM Linux交叉编译Rust

发布时间:2020-12-14 05:28:45 所属栏目:Windows 来源:网络整理
导读:我正在使用 Windows 10.我想交叉编译一个Rust程序,以便在armv7-unknown-linux-gnueabihf上运行. (armv7-unknown-linux-muscl也可以接受,但似乎没有.) 这是我的步骤: 安装rustup rustup toolchain install stable-x86_64-pc-windows-gnu rustup toolchain默
我正在使用 Windows 10.我想交叉编译一个Rust程序,以便在armv7-unknown-linux-gnueabihf上运行. (armv7-unknown-linux-muscl也可以接受,但似乎没有.)

这是我的步骤:

>安装rustup
> rustup toolchain install stable-x86_64-pc-windows-gnu
> rustup toolchain默认stable-x86_64-pc-windows-gnu
> rustup target添加armv7-unknown-linux-gnueabihf
>编辑我的./cargo/config文件以包含:

[build]
target = "armv7-unknown-linux-gnueabihf"

>货物建造

这可以很好地编译所有内容,但是当涉及链接时会出现此错误:

error: could not exec the linker `cc`: The system cannot find the file specified. (os error 2)

据我所知,这是因为Rust没有自己的链接器而是使用GCC.显然我需要自己提供并将其添加到./cargo/config文件中:

[target.armv7-unknown-linux-gnueabihf]
linker = "c:/path/to/my/gcc/cross/compiler"

是对的吗?如果是这样,我可以在地球上下载这样的Windows交叉编译器,为什么不进行生锈安装呢?必须自己编译GCC的交叉编译版本是交叉编译C/C++程序的最大痛苦. Rustup真的不会让这更容易吗?

解决方法

感谢@ Notlikethat的评论:

a)是的,您需要提供自己的GCC交叉编译器.

b)你可以得到一个here(选择一个mingw32版本).

只需解压linaro的海湾合作委员会然后将货物指向它:

[target.armv7-unknown-linux-gnueabihf]
linker = "C:/Users/me/gcc-linaro-5.3.1-2016.05-i686-mingw32_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc.exe"

它似乎工作,即使它是手臂而不是armv7-.我猜连接不依赖于ISA.实际上我还没有运行它,但它构建没有错误!

编辑:

您现在可以使用armv7-unknown-linux-musleabihf来获取实际的可移植二进制文件(即它不依赖于GNU C库,这通常会导致兼容性问题).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读