编译rust程序,并让它依赖低版本的GLIBC库

目录

在linux环境下编译rust程序,编译好的程序会依赖你当前系统的GLIBC库,也就是说你的程序无法在使用更低版本GLIBC库的linux系统中运行。

查看当前系统的GLIBC版本:

strings /lib64/libc.so.6 | grep GLIBC

为了让编译的程序依赖比较低版本的GLIBC库,我们有两种方法,方法一:在较低版本的linux系统里面编译,方法二:使用静态编译,把glibc一起编译到程序里,这样编译后的程序会大一些。

方法一:在较低版本的linux系统里面编译

可以用docker跑一个centos7容器来实现。

用 docker 启动一个centos-7容器:

docker run -it -d -v /home/codes/rust:/rust centos:7 bash

/home/codes/rust 是你rust代码所在目录,把它映射到容器里,准备编译。

然后到rust官网拷贝安装命令:

https://www.rust-lang.org/tools/install

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

进入centos容器里,用上面命令安装rust

安装完毕,执行命令 source ~/.bashrc , 使cargo命令可以马上生效

更新centos源

bash 复制代码
rm -rf /etc/yum.repos.d/*.repo           #删除repo文件,或者自己备份
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache                             #更新缓存

安装 gcc

bash 复制代码
yum install gcc gcc-c++

然后就可以编译代码了

方法二:静态编译

用 rustup target list 查看当前rust有哪些编译环境

bash 复制代码
x86_64-pc-windows-gnullvm
x86_64-pc-windows-msvc
x86_64-unknown-freebsd
x86_64-unknown-fuchsia
x86_64-unknown-illumos
x86_64-unknown-linux-gnu (installed)
x86_64-unknown-linux-gnux32
x86_64-unknown-linux-musl (installed)
x86_64-unknown-linux-ohos

x86_64-unknown-linux-gnu 通常是默认安装,如果没有安装,则用下面语句安装一下:

rustup target add x86_64-unknown-linux-gnu

在你的代码目录创建文件 .cargo/config.toml ,内容如下:

bash 复制代码
[target.x86_64-unknown-linux-gnu]
rustflags = ["-C", "target-feature=+crt-static"]

然后用下面语句编译程序即可:

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

相关推荐
-凌凌漆-35 分钟前
【Qt】QStringLiteral 介绍
开发语言·qt
程序员爱钓鱼35 分钟前
Go语言项目工程化 — 常见开发工具与 CI/CD 支持
开发语言·后端·golang·gin
军训猫猫头1 小时前
1.如何对多个控件进行高效的绑定 C#例子 WPF例子
开发语言·算法·c#·.net
真的想上岸啊1 小时前
学习C++、QT---18(C++ 记事本项目的stylesheet)
开发语言·c++·学习
明天好,会的2 小时前
跨平台ZeroMQ:在Rust中使用zmq库的完整指南
开发语言·后端·rust
丁劲犇2 小时前
用 Turbo Vision 2 为 Qt 6 控制台应用创建 TUI 字符 MainFrame
开发语言·c++·qt·tui·字符界面·curse
旷世奇才李先生2 小时前
Next.js 安装使用教程
开发语言·javascript·ecmascript
charlie1145141913 小时前
深入理解Qt的SetWindowsFlags函数
开发语言·c++·qt·原理分析
likeGhee4 小时前
python缓存装饰器实现方案
开发语言·python·缓存
whoarethenext4 小时前
使用 C++/Faiss 加速海量 MFCC 特征的相似性搜索
开发语言·c++·faiss