首页 > 其他分享 >rust 交叉编译

rust 交叉编译

时间:2023-09-06 20:34:21浏览次数:41  
标签:none target gnu aarch64 交叉 编译 linux rust

交叉编译

Windows 下编译到 arm64-linux

需要下载 arm 的编译 toolchain,有不同的选择:使用aarch64-none-linux-gnu 或者 aarch64-none-linux-musl。

这里使用 aarch64-none-linux-gnu

  • 安装好rust,可以正常编译
  • 下载 windows 下的 arm-gnu-toolchain,并安装,配置环境变量 aarch64-none-linux-gnu/bin
    地址:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads, 
    选择 AArch64 GNU/Linux target (aarch64-none-linux-gnu)
    
    安装,后配置环境变量。
    在终端中执行 aarch64-none-linux-gnu-gcc -v 正常输出,证明配置完成。
    
  • 配置 ~/.cargo/config.toml, 注意不是项目中的 Cargo.toml
    [target.aarch64-unknown-linux-gnu]
    linker = "aarch64-none-linux-gnu-gcc"
    
  • 安装 target
    执行 rustup target add aarch64-unknown-linux-gnu
    
  • 尝试编译
    执行cargo build --target=aarch64-unknown-linux-gnu
    
  • glibc 版本问题
    编译后,在目标机器上没有对应的glibc版本,使用静态链接,在 ~/.cargo/config.toml 修改如下
    [target.aarch64-unknown-linux-gnu]
    linker = "aarch64-none-linux-gnu-gcc"
    rustflags = ["-C", "target-feature=+crt-static"]
    

标签:none,target,gnu,aarch64,交叉,编译,linux,rust
From: https://www.cnblogs.com/bpzj/p/17683327.html

相关文章

  • Maven对源文件的编译
    我们在服务器上安装了JDK17以及Maven,然后有个脚本会从不同的仓库拉取源码并通过mvncompile命令进行编译。不同的源码采用不同版本的jdk进行编辑,那么只有一个JDK17可以满足编译需求吗?在说明该问题前我们先回顾下Java文件的编译回顾Java的编译首先,所谓的源文件本身就是个文本文件,文......
  • Linux 编译安装 OpenSSL
    #下载软件包wgethttps://www.openssl.org/source/openssl-1.1.1v.tar.gz#编译安装OpenSSLtarzxvfopenssl-1.1.1v.tar.gzcdopenssl-1.1.1v./config--prefix=/usr/local/openssl-1.1.1make&&makeinstall#备份原OpenSSLmv/usr/bin/openssl/usr/bin/openssl.......
  • Androd 7.0编译错误合集
    1 error:ro.build.fingerprintcannotexceed91bytesbuild/tools/post_process_props.py.Changelinesasfollows:PROP_NAME_MAX=31#PROP_VALUE_MAX=91PROP_VALUE_MAX=128PROP_NAME_MAX=31#PROP_VALUE_MAX=91PROP_VALUE_MAX=128bionic/libc/include......
  • android编译报错:error: ro.build.fingerprint cannot exceed 91 bytes
    http://stackoverflow.com/questions/28776970/android-build-error-ro-build-fingerprint-cannot-exceed-91-bytesbuild/tools/post_process_props.py.Changelinesasfollows:PROP_NAME_MAX=31#PROP_VALUE_MAX=91PROP_VALUE_MAX=128PROP_NAME_MAX=31#PROP_V......
  • ota升级包编译过程中firmware如何添加进来
    整个分析过程中,机型名以xxxx为例主要可分为一firmware如何添加进target-files.zip二编译ota升级包时如何从target-files.zip取出firmware并添加到ota升级包三如何向升级脚本updater-script中加入控制firmware升级的语句四增量升级包相比全量包不同的步骤五结论及修复方......
  • 输出编译ota升级包时的打包参数
    build / tools/releasetools/common.pydefParseOptions(argv,docstring,extra_opts="",extra_long_opts=(),extra_option_handler=None):"""Parsetheoptionsinargvandreturn......
  • 如何编译lex文件和yacc文件
    lex文件:flexfilename.l或者flexfilename.lexyacc文件:bisonfilename.y或者flexfilename.yacclex解析此法yacc解析语法lex说穿了,基本套路就是:1.创建lex文件2.使用flexxxx.lex来生成.c文件3.使用c编译器(如gcc),来生成一个可执行文件。......
  • java既是编译型语言又是解释型语言
    当一个中国人写的小说给美国人看时,为了可以看懂,可以直接整本翻译或者请一个翻译实时翻译编译型相当于整本翻译解释型相当于请一个翻译实时翻译java既是编译型又是解释型语言......
  • 在gradle中添加,但是编译不通过
    compile'com.android.support:design:24.1.1'在gradle中添加,但是编译不通过,需要把compile改成buildgradlemoduledependencies{implementation'androidx.appcompat:appcompat:1.2.0'implementation'com.google.android.material:material:1.3.0&......
  • python3.10及以上版本编译安装ssl模块(openssl)
    由于python3.10之后版本不在支持libressl使用ssl,需要使用openssl安装来解决编译安装python时候遇到的ssl模块导入失败的问题,这里需要用的openssl1.1.1版本或者更高版本在别人的博客查阅到资料,特此记录:https://blog.csdn.net/ye__mo/article/details/129436629?spm=1001.2101.30......