ubuntu22编译低版本glibc问题

编译打包和其他
回复
blackt3a
帖子: 1
注册时间: 2023-02-18 21:40
系统: ubuntu22.04

ubuntu22编译低版本glibc问题

#1

帖子 blackt3a » 2023-02-18 21:56

各位大神好:
现在的电脑是ubuntu22的,但是因为需要学习一些旧版本glibc的特性,需用到glibc2.23。但是直接使用官方编译好的二进制包会出现符号报错。
不得已,只有用本地gcc(现为gcc-11)现编译一个glibc2.23版本。编译过程中已经自行解决了一些问题,但以下报错我始终找不到该怎么修改编译配置文件(我在makefile里没找到)
报错内容:
make[2]: Entering directory '/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/nss'
gcc -pie -Wl,-O1 -nostdlib -nostartfiles -o /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/nss/makedb -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/csu/Scrt1.o /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/csu/crti.o `gcc --print-file-name=crtbeginS.o` /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/nss/makedb.o /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/nss/xmalloc.o /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/nss/hash-string.o -lselinux -Wl,-dynamic-linker=/home/blacktea/glibc-all-in-one/glibc_compiled/bin/lib/ld-linux-x86-64.so.2 -Wl,-rpath-link=/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/math:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/elf:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/dlfcn:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/nss:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/nis:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/rt:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/resolv:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/crypt:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/mathvec:/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/nptl /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/libc.so.6 /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/libc_nonshared.a -Wl,--as-needed /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/elf/ld.so -Wl,--no-as-needed -lgcc `gcc --print-file-name=crtendS.o` /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/csu/crtn.o
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `dlsym@GLIBC_2.34'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `dlclose@GLIBC_2.34'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `lstat64@GLIBC_2.33'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `stat@GLIBC_2.33'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `fstat@GLIBC_2.33'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `lstat@GLIBC_2.33'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `dlerror@GLIBC_2.34'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `gettid@GLIBC_2.30'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `dlopen@GLIBC_2.34'
collect2: error: ld returned 1 exit status
make[2]: *** [../Rules:147: /home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/build/nss/makedb] Error 1
make[2]: Leaving directory '/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23/nss'
make[1]: *** [Makefile:214: nss/others] Error 2
make[1]: Leaving directory '/home/blacktea/glibc-all-in-one/glibc_compiled/src/glibc-2.23'
make: *** [Makefile:9: all] Error 2

如果有大神直到怎么解决并告知我,我将感激不尽。
谢谢
头像
astolia
论坛版主
帖子: 6477
注册时间: 2008-09-18 13:11

Re: ubuntu22编译低版本glibc问题

#2

帖子 astolia » 2023-02-21 10:09

问题原因很简单,你编译的makedb依赖libselinux,但当前系统上已安装的libselinux依赖的那些符号在glibc 2.23里找不到。要么你重新去编译libselinux,要么在configure那一步时传入--without-selinux禁掉selinux支持
回复