【RUST 实战】交叉编译之Windows To Linux

简介: 【RUST 实战】交叉编译之Windows To Linux

0x00 开篇


什么是交叉编译?可能有的同学不理解。我这里简单介绍下,所谓交叉编译,就是在一个平台上可以编译生成另一个平台的可执行文件。这节课主要介绍如何在Windows系统上编译生成Linux系统的可执行文件。 


0x01 准备工作


我们跨平台编译,要准备如下一些前期工作。


操作环境


  • Windows 11
  • VS2012(VS2019我也测试过)
  • CLion
  • Rust 1.56.1
  • CentOS 7

添加Target


这里我所用的Linux是64位的,所以我这里需要添加x86_64-unknown-linux-musl 的这个target

rustup target add x86_64-unknown-linux-musl

通过下面的命令可以查看所有支持的target和已经安装的target。如果已安装会在后面显示(installed)

rustup target list


新建项目


新建一个普通项目cross_compile_test。这里我们以默认输出hello world的程序为例。


0a2653c851af460fa595bd959398a8f1.png


添加配置文件


配置文件可以针对某个项目,当然也可以在全局配置。下面以针对单个项目为例。

在项目目录下添加.cargo文件夹,在.cargo文件夹下添加config.toml文件。并且在config.toml中输入以下内容。

[target.x86_64-unknown-linux-musl]
linker = "rust-lld"
rustflags = ["-C", "linker-flavor=ld.lld"]

PS:关于全局配置,可以把上面的配置内容,复制到"C:/Users/当前用户名/.cargo/config"文件中,如果没有可以自行创建。config文件可以带toml扩展名,也可以不带。

最终结果如下图所示:


2d65d23f6d4748949b924e4057485923.png

 

0x02 项目编译


终端执行下面的命令,编译为Linux可执行二进制文件。如果不加--release则默认以debug模式编译。

cargo build --release --target=x86_64-unknown-linux-musl


6de278e6d6694ce5bb08e7e842b7e74b.png


编译完成后,会自动生成target文件夹,在target/x86_64-unknown-linux-musl/release文件夹下的cross_compile_test就是最终的Linux可执行二进制文件。 


0x03 文件测试


我们将文件拷贝到CentOS中测试。可以完美执行~~~


 8ec4f2997fb246878c34ecd6d122b7c6.png


0x04 扩展——Windows静态编译


不知道你是否测试过下面的这个场景。在Windows上,如果把每次使用cargo build命令编译后生成.exe可执行文件复制到其它电脑上运行,是无法运行的。这里呢,我们需要使用静态编译。否则,在其它Windows电脑上将会报错。


静态编译的方法也很简单,只需在配置文件中加入下面的代码。

[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]

然后再使用下面的命令编译即可。

cargo build --release --target=x86_64-pc-windows-msvc

具体过程同上面的Linux二进制文件编译过程。这里就不再详细叙述了。


相关文章
|
9月前
|
Linux 虚拟化 iOS开发
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
1875 0
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
|
10月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
259 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
Linux 虚拟化 iOS开发
VMware Remote Console 13.0.0 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
VMware Remote Console 13.0.0 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
3102 1
VMware Remote Console 13.0.0 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
|
12月前
|
Linux 虚拟化 iOS开发
VMware Workstation 17.6.4 Pro Unlocker & OEM BIOS 2.7 for Windows & Linux
VMware Workstation 17.6.4 Pro Unlocker & OEM BIOS 2.7 for Windows & Linux
3267 0
VMware Workstation 17.6.4 Pro Unlocker & OEM BIOS 2.7 for Windows & Linux
|
11月前
|
Ubuntu Linux 数据安全/隐私保护
Windows上快速安装Linux子系统Ubuntu
Installing, this may take a few minutes...WslRegisterDistribution failed with error: 0x800701bcError: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernelPress any key to continue... 原因是 wsl1 升级到 wsl2 之后,内核却没有升级。 解决:下载最新的wsl安装包(wsl安装包)
|
12月前
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
3700 0
|
安全 API 数据安全/隐私保护
aipy实战:建设PE文件查杀神器,阻止Windows EXE木马!
本工具为小型木马静态特征查杀工具,专用于检测Windows下的EXE文件是否为可疑木马。核心功能包括:扫描恶意字符串(如keylogger、powershell)、检查熵值异常以判断加密/加壳、揪出可疑API组合(如注册表篡改、网络通信链)以及解析PE头分析编译环境与加壳痕迹。通过提示词实现功能开发,并保存为`aipy_kill_rat.py`文件。测试结果显示,工具成功扫描出426个可疑字符串、超高熵值及恶意API组合,确认目标文件为恶意木马。该工具轻量灵活,适合样本初筛与应急响应,是静态分析的高效利器。
|
12月前
|
Linux Docker Windows
windows docker安装报错适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续。可通过运行 “wsl.exe --update” 进行更新。
适用于 Linux 的 Windows 子系统需更新至最新版本(如 wsl.2.4.11.0.x64.msi)以解决 2025 年 Windows 更新后可能出现的兼容性问题。用户可通过运行 “wsl.exe --update” 或访问提供的链接下载升级包进行更新。
4322 0
|
安全 Ubuntu Linux
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
596 0
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估