在 Ubuntu 上为 CentOS 编译 Rust 程序

简介: 为什么在 Ubuntu 上编译个 Rust 的 helloworld 程序,放到 CentOS 上都跑不起来

现在 CentOS 8 还没出来,最新的是 CentOS 7.6,上面搭载的 glibc 版本是 2.17,都已经是 2012 年那时候的版本了。

现在开发者比较常用的桌面 Linux 系统,比如 Ubuntu / Debian / Mint / Arch / Manjaro 等,都是比较新的 glibc 版本了,比如 Ubuntu 18.04 已经到了 2.27 的版本了。在 glibc 2.18 的时候,引入了一个 __cxa_thread_atexit_impl 标记,所有基于 2.18 及以上的 glibc 环境编译的动态链接程序,如果放到 2.18 之前的 glibc 环境里跑,就会报错:

./foo: /lib/libc.so.6: version 'GLIBC_2.18' not found (required by ./foo)

这也是为什么在 Ubuntu 上编译个 Rust 的 helloworld 程序,放到 CentOS 上都跑不起来的原因。

也曾想过升级 CentOS 上的 glibc 版本,后来发现这样干太危险,在虚拟机上试一下手工编译升级,结果把 CentOS 搞挂了,起都起不来了!

然后就不得不在虚拟机里跑一个 CentOS 来进行 Rust 程序的编译,这样编译出来的程序放到 CentOS 服务器上去跑得倒是很欢快,只是在虚拟机里跑 CentOS 实在是卡得受不了,后来想在机器上划个分区重新来安装一套 CentOS 得了,但是又不太甘心放弃这么好用的 Mint 系统,改用那套蹩脚的 CentOS。

后来得到高人指点,尝试在 Mint 上用 Docker 跑一个 CentOS 系统,来进行 Rust 程序的编译,发现这样的效果很好!开始还以为 CentOS 默认用的 3.X 的内核,跑在 4.15 的内核上会有问题,后来发现没啥问题。

以后还是尽量不要用 CentOS,换成 Ubuntu Server 爽多了!

clia
+关注
目录
打赏
0
0
0
0
519
分享
相关文章
Ubuntu编译ffmpeg解决错误:ERROR: avisynth/avisynth_c.h not found
通过本文的详细指导,您可以顺利地在Ubuntu系统上配置和编译FFmpeg,并解决Avisynth头文件缺失的问题。
80 27
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
81 43
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
73 30
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
173 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
37 12
CentOS7扩容踩坑记录(最后只有ubuntu成功)
这篇博客记录了一次尝试给CentOS根分区扩容的过程。作者在VMware中扩展了虚拟磁盘,但最终未能成功将新分区合并到现有卷组中,因为原有分区未创建物理卷(PV)和卷组(VG)。过程中遇到了多个问题,如分区文件正在使用中等。最终作者提醒读者在操作前务必先检查当前的分区和卷组状态。
75 4
CentOS7扩容踩坑记录(最后只有ubuntu成功)
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
203 13
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
194 13
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
215 3
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
245 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等