首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成glibc时对_dl_cet_check的未定义引用

生成glibc时对_dl_cet_check的未定义引用
EN

Stack Overflow用户
提问于 2019-11-22 13:17:06
回答 1查看 1.2K关注 0票数 4

库本图19.10

我完全跟踪了那条指令

代码语言:javascript
复制
$ mkdir $HOME/src
$ cd $HOME/src
$ git clone git://sourceware.org/git/glibc.git
$ mkdir -p $HOME/build/glibc
$ cd $HOME/build/glibc
$ $HOME/src/glibc/configure --prefix=/usr
$ make

但是,在最后一个命令'make‘中,我得到了以下错误(只给出了输出的结尾):

代码语言:javascript
复制
make[3]: Leaving directory '/home/denis/src/glibc/elf'
gcc   -nostdlib -nostartfiles -r -o /home/denis/build/glibc/elf/librtld.os '-Wl,-(' /home/denis/build/glibc/elf/dl-allobjs.os /home/denis/build/glibc/elf/rtld-libc.a -lgcc '-Wl,-)' \
          -Wl,-Map,/home/denis/build/glibc/elf/librtld.os.map
gcc   -nostdlib -nostartfiles -shared -o /home/denis/build/glibc/elf/ld.so.new          \
          -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -Wl,-z,defs       \
          /home/denis/build/glibc/elf/librtld.os -Wl,--version-script=/home/denis/build/glibc/ld.map            \
          -Wl,-soname=ld-linux-x86-64.so.2                      \
          -Wl,-defsym=_begin=0
/usr/bin/ld: /home/denis/build/glibc/elf/librtld.os: in function `_rtld_main_check':
/home/denis/src/glibc/elf/../sysdeps/x86/dl-prop.h:33: undefined reference to `_dl_cet_check'
/usr/bin/ld: /home/denis/src/glibc/elf/../sysdeps/x86/dl-prop.h:33: undefined reference to `_dl_cet_check'
/usr/bin/ld: /home/denis/src/glibc/elf/../sysdeps/x86/dl-prop.h:33: undefined reference to `_dl_cet_check'
/usr/bin/ld: /home/denis/build/glibc/elf/librtld.os: in function `_dl_open_check':
/home/denis/src/glibc/elf/../sysdeps/x86/dl-prop.h:41: undefined reference to `_dl_cet_open_check'
/usr/bin/ld: /home/denis/build/glibc/elf/ld.so.new: hidden symbol `_dl_cet_open_check' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:510: /home/denis/build/glibc/elf/ld.so] Error 1
make[2]: Leaving directory '/home/denis/src/glibc/elf'
make[1]: *** [Makefile:438: elf/subdir_lib] Error 2
make[1]: Leaving directory '/home/denis/src/glibc'
make: *** [Makefile:9: all] Error 2

我需要做些什么来建立一个图书馆?

EN

Stack Overflow用户

发布于 2019-11-23 10:26:16

显然,您的GCC版本隐式地启用了-fcf-protection标志。上游GCC没有这样做,因此glibc配置逻辑没有为此做好准备。您必须使用CET显式配置,如下所示:

代码语言:javascript
复制
$ $HOME/src/glibc/configure --prefix=/usr --enable-cet

因此,CET支持功能将链接到。

编辑--这已经作为Bug 25225 -如果GCC默认为-fcf-保护,则ld.so无法在x86上链接。归档了。现在它被固定在所有支持CET的glibc分支上。

票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58995065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档