c++ - libgcc_s.so : undefined reference to `__stack_chk_fail@GLIBC_2.4'

标签 c++ c oracle linker linker-errors

起初我警告说我/不是程序员,而只是管理员我试图理解一些操作

当我安装 Oracle 制作的程序时,我收到日志消息:

/usr/bin/make -f ins_precomp.mk relink ORACLE_HOME=/u01/oracle/OraHome_1 EXENAME=proc/Linking /u01/oracle/OraHome_1/precomp/lib/proc<br/> libgcc_s.so: undefined reference to __stack_chk_fail@GLIBC_2.4'`

ls -l<br/> ../libgcc_s.so -> /lib/libgcc_s.so.1

所以接下来我尝试通过以下方式进行诊断:

objdump -T/lib/libgcc_s.so.1 | grep __stack_chk_fail
00000000 DF *UND* 00000000 GLIBC_2.4 __stack_chk_fail

ldd/lib/libgcc_s.so.1.ORG
linux-gate.so.1 => (0x00fc5000)<br/> libc.so.6 => /lib/libc.so.6 (0x00110000)<br/> /lib/ld-linux.so.2 (0x00b39000)

objdump -T/lib/libc.so.6 |grep __stack_chk_fail
00c52f80 g DF .text 0000001a GLIBC_2.4 __stack_chk_fail

1) 如果所有符号都在共享库中,我不知道为什么会出现这个问题(也许不是,请纠正我,或者如何检查)

当我将没有符号 __stack_chk_fail 的旧库 libgcc_s.so.1 放入时

objdump -T/lib/libgcc_s.so.1 |grep __stack_chk_fail
empty output

一切正常

2) 链接器是否不检查对 __stack_chk_fail 的引用,因为在那种情况下 libgcc_s.so.1 中不存在?

最佳答案

问题是:

libgcc_s.so 依赖于 libc.so.6。这个问题从 glibc 2.4 版本开始。

您应该在链接行中添加 -lc。

这个问题会给你更多的信息。 In Linux stubs are used for standard libraries. Why are stubs required?

关于c++ - libgcc_s.so : undefined reference to `__stack_chk_fail@GLIBC_2.4' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5090881/

相关文章:

mysql - 返回单行子查询的更新语句返回多行

c++ - 在 C++ 中打印出 unsigned char 数组的十六进制值

c++ - 应该如何以 C++11 风格初始化这个成员 vector ?

c - 如何清除 C 中的数组?

c - Qsort结构数组比较函数

mysql - SQL 连接 : Are selects between more than 2 tables still joins?

构造函数中的函数的 C++ 问题

c++ - Xcode 中的清屏

c - 如何在 C 中通过引用将结构数组传递给函数?

oracle - Netbeans 中的 SQLJ