阡陌 发表于 2024-1-23 12:39:50

解决 glibc 库版本不匹配的问题



使用高版本的 GCC 编译的程序在低版本 glibc 的机器上运行的时候会提示:
>libc.so.6: version 'GLIBC_2.14' not found

之类的错误,这是因为 GCC 所连接的 glibc 版本高于目标系统的 glibc 的版本。查看 libc.so.6 所支持的版本的方法: `strings /lib/libc.so.6 | grep GLIBC_`。

解决这一问题要么升级系统的 libc,要么使程序使用自己的一套 libc 。如果选择后者,需要在连接的时候指定库的优先搜索位置。并且还要指定 ld-linux.so 的位置,否则会提示段错误Segmentation fault。

```
QMAKE_LINK += -Wl,-rpath=./lib:/usr/local/bs230/lib -Wl,-dynamic-linker=/usr/local/bs230/lib/ld-linux.so.3
```

注意:使用相对路径时所相对的是执行者所在的位置(pwd)

比如在 /home 调用 /usr/local/bs230/bsinfo 会在查找 /home/lib 文件夾,而不是 /usr/local/bs230/lib


页: [1]
查看完整版本: 解决 glibc 库版本不匹配的问题