安装 calibre 时,提示 GNU libc 版本低。( Ubuntu 18.04 版本是 2.27 最方便的方法是升级系统到 20 或 22)
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin Using python executable: /usr/bin/python3 2022-12-06 11:06:49 URL:https://download.calibre-ebook.com/linux-installer.sh [33639/33639] -> "-" [1] Your system has GNU libc version 2.27. The calibre binaries require at least version: 2.31 (released on 2020-02-01). Update your system.
查看源码所知,libc(C 标准库) 是 Python 标准库自带的 ctypes 模块里调用的。
问:为什么python 要用到 libc 库呢?
答:因为Python 和 C 的混合编程工具,所以要用到
文件位置:
Windows 系统下的 C 标准库动态链接文件为 msvcrt.dll
(一般在目录 C:\Windows\System32 和 C:\Windows\SysWOW64 下分别对应 32-bit 和 64-bit,
使用时不用刻意区分,Python 会选择合适的)
Linux 系统下的 C 标准库动态链接文件为 libc.so.6 (以 64-bit Ubuntu 系统为例, 在目录 /lib/x86_64-linux-gnu 下)
两种查看 glibc 版本方法:
方法一:
ldd --version ldd (Ubuntu GLIBC 2.27-3ubuntu1.5) 2.27 Copyright (C) 2018 自由软件基金会。 这是一个自由软件;请见源代码的授权条款。本软件不含任何没有担保;甚至不保证适销性 或者适合某些特殊目的。 由 Roland McGrath 和 Ulrich Drepper 编写。
方法二:
strings /lib/x86_64-linux-gnu/libm.so.6 | grep GLIBC_
先查找一下本机的 libc 位置。
因为是 libc 是动态库,是被调用的,所以用 whereis 命令查询不到,就只能用 find 搜索了。
查到到的结果:
$ find /usr -name "libc.so" /usr/lib32/libc.so /usr/lib/x86_64-linux-gnu/libc.so /usr/libx32/libc.so
根据提示“GNU libc version 2.27” 那就是 /usr/lib/x86_64-linux-gnu/libc.so 这个。
先备份了,防止被覆盖,想用这个版本还没有了。
sudo mv /usr/lib/x86_64-linux-gnu/libc.so{,_bak_2.27}
下载源码编译安装:
更新依赖工具:
$ sudo apt install build-essential gawk bison texinfo
修改默认环境变量
## 把旧的变量内容保存到 LD_LIBRARY_PATH_old 变量里 LD_LIBRARY_PATH_old=$LD_LIBRARY_PATH ## 清空(删除) 变量内容 LD_LIBRARY_PATH=
下载地址:
http://ftp.gnu.org/pub/gnu/libc/
解压: (注意,不要在有中文的路径下编译)
tar -zxf glibc-2.31.tar.gz cd glibc-2.31/
注:注意版本号替换成你的
新建目录:
mkdir build/ && cd build/
配置安装路径:
../configure --prefix=/usr/local/glibc-2.31
注:注意版本号替换成你的
显示以下内容,执行成功:
configure: creating ./config.status config.status: creating config.make config.status: creating Makefile config.status: creating config.h config.status: executing default commands
目录下也产生文件:
$ ll 总用量 96K drwxrwxr-x 2 ubuntu ubuntu 4.0K 12月 6 12:37 bits/ -rw-rw-r-- 1 ubuntu ubuntu 7.9K 12月 6 12:37 config.h -rw-rw-r-- 1 ubuntu ubuntu 33K 12月 6 12:37 config.log -rw-rw-r-- 1 ubuntu ubuntu 4.2K 12月 6 12:37 config.make -rwxrwxr-x 1 ubuntu ubuntu 33K 12月 6 12:37 config.status* -rw-rw-r-- 1 ubuntu ubuntu 560 12月 6 12:37 Makefile
编译:
make -j4
-j4 代表用4线程编译(加快编译速度),编译出错时,可以不加
安装:
suod make install
创建软连接:
cd /usr/local/glibc-2.31/ ln -s ld-2.31.so ld-linux-x86-64.so.2 ln -s libc-2.31.so libc.so.6
查看创建结果:
ll ld-linux-x86-64.so.2 libc.so.6
lrwxrwxrwx 1 zhiwei zhiwei 10 Jan 17 15:14 ld-linux-x86-64.so.2 -> ld-2.31.so*
lrwxrwxrwx 1 zhiwei zhiwei 12 Jan 17 15:13 libc.so.6 -> libc-2.31.so*
创建软件连接:
sudo ln -s /usr/local/glibc-2.31/lib/libc.so /usr/lib/x86_64-linux-gnu/libc.so
添加环境变量:
vim /etc/profile export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/glibc-2.31 ## 编辑完后,wq 保存退出,
## 使之生效 source /etc/profile
----------
错误提示:
在 ../configure 时 ,
提示: gawk 丢失或太旧,需要安装
configure: error: *** These critical programs are missing or too old: gawk bison *** Check the INSTALL file for required versions.
提示: makeinfo 版本警告,是 texinfo 需要安装
configure: WARNING: *** These auxiliary programs are missing or incompatible versions: makeinfo *** some features or tests will be disabled. *** Check the INSTALL file for required versions. checking LD_LIBRARY_PATH variable... contains current directory configure: error: *** LD_LIBRARY_PATH shouldn't contain the current directory when *** building glibc. Please change the environment variable *** and run configure again.
提示:LD_LIBRARY_PATH 变量内容问题
configure: error: *** LD_LIBRARY_PATH shouldn't contain the current directory when *** building glibc. Please change the environment variable *** and run configure again.
提示:注意,不要在有中文的路径下编
Makefile:142: recipe for target 'glibc-2.31/build/manual/libc.info' failed
参考:
https://blog.csdn.net/jiang_huixin/article/details/123414527
https://blog.csdn.net/u014634615/article/details/120333287
https://blog.csdn.net/qq_31511955/article/details/88179586
https://blog.csdn.net/jiang_huixin/article/details/123414527
https://blog.csdn.net/qq_24755999/article/details/78722788
https://zhuanlan.zhihu.com/p/549870561
标签:12,2.31,libc,system,version,so,usr,ubuntu From: https://www.cnblogs.com/wutou/p/16954796.html