【问题标题】:"Segmentation fault (core dumped)" after explicit glibc linking.显式 glibc 链接后出现“分段错误(核心转储)”。
【发布时间】:2012-10-13 17:30:25
【问题描述】:

出于某种原因,我必须手动链接 glibc。我正在尝试运行以下程序:

#include <stdio.h>
int _start(){
    printf("ABCDE");
    return 0;
}

为了编译它,我输入以下命令:

gcc -c main.c -o main.o
gcc -L/lib/x86_64-linux-gnu/ -nostdlib main.o -o main -lc

不幸的是,在运行./main 之后,我只得到 分段错误(核心转储)

谁能告诉我我做错了什么?

【问题讨论】:

  • 您是否要覆盖 rt-startup ?因为你的 id 是reserved
  • 您必须手动链接-lc,因为-nostdlib 禁用它。

标签: c gcc linker glibc


【解决方案1】:

_exit(0); 应该可以解决问题。

但是,您想达到什么目的? Sample

【讨论】:

  • 非常感谢!我必须编写一个应用程序,它将在具有旧 glibc 版本的旧内核上运行。我已经查明链接是否可以正常工作。
  • @nkdm 您在这里尝试过的方法非常不太可能在您的程序变得稍微复杂一些时在较旧的内核上工作。您可能应该阅读以下答案:stackoverflow.com/a/2079757/50617stackoverflow.com/a/8658468/50617
  • 我有动态链接 GLIBC 2.15 的编译器,但在目标系统上我有不兼容的 GLIBC 2.4。我认为使用“--static”选项链接会占用大量内存,但幸运的是这是可以接受的。
猜你喜欢
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
相关资源
最近更新 更多