当前位置:首页 » 编程软件 » 编译指定glibc

编译指定glibc

发布时间: 2023-04-06 21:59:05

1. linux 的rpm包有 glibc和linux 两种,有什么区别呀!

linux的rpm发行包,一般会在rpm文件名中说明编译这个rpm的环境,安装rpm的时候也要找到对应自己操作系统环境的包来安装。

1:如果rpm包名里面有linux并且指定了linux版本,说明这个rpm包就是在这个linux版本下编译的,如果你的linux版本匹配,就可以安装。
2:如果rpm包名里面有glibc并且指定了glibc版本,说明这个rpm包需要在指定的glibc版本环境中安装,glibc是linux下的基础库。
3:这2种包不一定是互斥的,只要符合环境要求,都可以安装。

2. make install glibc,卸载glibc

你没定义安装路纳锋径,应该是按默认安装到/usr/local下面的了,删除相亩橡应文件夹就可以的了.make clean 只是清除编译目录下的已编译文件.make install后会将编译好的文件迅茄旁安装到一个或多个指定或默认的目录里的.

3. linux编译安装glibc-2.17

这个其实应该找一个旧版本的ntfs-3g,版本太新
另外,不要随便编译安装glibc,如果你新编译的glibc覆盖了系统中的,不能保证你的系统还能正常使用

4. 高版本gcc编译出的程序在低版本glibc机器上运行

比如我们用gcc 9.3.0编译程序,但需要发布的机器gcc版本是4.8.5,怎么办?祥孙

你可能想到如下方法

将libc和libstdc++静态编译,编译时带上如下参数。

glibc并不推荐静态链接,你依赖的其他库可能依赖的了glibc,并且往往是动态链接的,可以通过 nm <bin> | grep GLIBC_ 确定你的程序是否依赖了glibc。

使用携带gcc9.3.0环境的容器发布程序,是可以的。但是在一些没有容器且没有sudo权限的场合,依然不太友好。

这个方法虽然听起来不是很优雅,但其实如果你对elf文件有一些了解,是不错的方式。下面说下具体的方法。

当你有条件获得程序源码,并能够重新编译时,可以直接在编译时指定相关参数来解决。
先说编译时要增加的参数:

gcc参数

ld参数

这两个参数分别设置的elf文件中的rpath和interpreter字段。

rpath
全名 run-time search path ,是elf文件中一个字段,它指定了可执行文件执行时搜索so文件的第一优先位置,一般编译器默认将该字段设为空。elf文件中还有一个类似的字段runpath,其作用与rpath类似,但搜索优先级稍低。搜索优先级:

如果你需要使用相对路径指定lib文件夹,可以使用 ORIGIN 变量,ld会将ORIGIN理解成可执行文件所在的路径。

interpreter
动态库加载器,程序启动时,操作系统会先把控制权转交给ld-linux-x86-64.so.2,该so负责加载所有程序依赖的so。。这个字段在链接时会帮你自动设置,64bit程序一般为 /lib64/ld-linux-x86-64.so.2 。修改rpath或者LD_LIBRARY_PATH指向本地lib目录,但通过ldd程序,发现/lib64/ld-linux-x86-64.so.2这个so仍然指向系统so。原因就是这个字并宽段是写谨蔽链死在elf文件中的,并不受LD_LIBRARY_PATH影响。

编译时带上这两个参数,下面只需要将你程序依赖的so打包一份,随程序进行发布即可。

当你无法编译程序时,也可以通过其他方式修改rpath和interpreter。这种情况需要使用到一个工具 patchelf ,通过 dnf install patchelf 即可安装。你可以通过它修改elf文件的rpath和interpreter:

除了绝对路径,一种比较常见的方式是在部署前,使用 pwd 获取当前路径,使用相对路径指向本地lib。

热点内容
为什么说服务器已停止响应 发布:2025-07-16 00:29:36 浏览:390
python判断字符串是否为空 发布:2025-07-16 00:21:47 浏览:210
安卓转苹果用什么软件 发布:2025-07-16 00:21:45 浏览:627
安卓官服如何登ios 发布:2025-07-16 00:21:32 浏览:623
天龙抢店脚本 发布:2025-07-16 00:14:47 浏览:958
华为荣耀存储卡 发布:2025-07-16 00:10:40 浏览:659
mysql创建utf8数据库 发布:2025-07-16 00:04:08 浏览:104
开机系统用户名密码多少 发布:2025-07-16 00:03:58 浏览:692
成都高品质安全存储柜 发布:2025-07-15 23:45:38 浏览:55
页面算法操作系统 发布:2025-07-15 23:35:30 浏览:129