gpt4 book ai didi

c - glibc链接差异导致段错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:13:36 24 4
gpt4 key购买 nike

我构建的服务器有些问题(我不是唯一使用它的人......)。它是 SLES 11(无 SP)。我已尝试卸载并重新安装 gcc、glibc 等,但均未成功。

问题是我构建的程序一旦遇到诸如 memset 或 strlen 之类的库函数就会出现段错误(请注意,这是调用此函数而不是函数本身,参数没问题)。我认为它肯定是链接错误,我可以证明它与 readelf 的不同。例如:

# readelf -s myprog | grep memset
247: 081461d0 52 <OS specific>: 10 GLOBAL DEFAULT 27 memset@GLIBC_2.0 (3)
3530: 081461d0 52 <OS specific>: 10 GLOBAL DEFAULT 27 memset@@GLIBC_2.0

与之前的工作版本相比:

  69: 00000000     0 FUNC    GLOBAL DEFAULT  UND memset@GLIBC_2.0 (2)
2035: 00000000 0 FUNC GLOBAL DEFAULT UND memset@@GLIBC_2.0

这是一个相当标准的 makefile,没有任何改变。链接器标志是:

LDFLAGS = -L$(companylibrarypath) -lourcompanylibrary -L$(mysql_lib_path) -lmysqlclient -L/usr/tls/ -lpthread -pthread -lz -L$(curl_lib_path) -lcurl -lxslt

最佳答案

你的程序以某种糟糕的方式重新定义了像 memset 这样的函数(而不是使用 std 库提供的版本)。这可能是由某些 header 引起的,这些 header 可能是“标准”...也可能是您的编译器(gcc?)以某种方式生成(elf)代码而不适合您的平台...
您还说链接过程失败,您的意思是链接器失败并且无法生成可执行文件吗?

关于c - glibc链接差异导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22038583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com