链接自定义libc后的段错误

时间:2018-04-23 13:42:57

标签: linux gcc build glibc

我尝试使用调试符号编译glibc并将其用于小型应用程序。所以我下载了glibc,编译没有问题,安装在/ custobuilds中,现在我正在编译我自己的应用程序:

/usr/bin/c++ -g -Wall -nostartfiles -nodefaultlibs -Wl,--dynamic-linker=/custobuilds/lib/ld-2.27.so   -o CMakeFiles/annotation.dir/annotation.o -c annotation.cpp
/usr/bin/c++ -g -Wall -nostartfiles -nodefaultlibs -Wl,--dynamic-linker=/custobuilds/lib/ld-2.27.so   CMakeFiles/annotation.dir/annotation.o /custobuilds/lib/crt1.o /custobuilds/lib/crti.o  -o annotation  -L/custobuilds/lib -rdynamic -lc -Wl,-rpath,/custobuilds/lib

事情正确联系起来:

zhani@zhani-Aspire-E1-571G:~/Thesis/test/build$ LD_TRACE_LOADED_OBJECTS=1 ./annotation 
linux-vdso.so.1 (0x00007ffe8558f000)
libc.so.6 => /custobuilds/lib/libc.so.6 (0x00007f73e02c2000)
/custobuilds/lib/ld-2.27.so (0x00007f73e0677000)

在源代码中,我还包含了正确的文件,只有

#include "/custobuilds/include/stdio.h"

我只有一个scanf()/ printf()。我用gdb检查过,它在到达main()

之前崩溃了

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

正确链接

不,它没有:您缺少crtn.o,并且链接行上的对象顺序通常应为:

crt1.o crti.o main.o -lc crtn.o