首页 文章

无法找到gcc链接到libc的时间

提问于
浏览
0

我正在尝试使用gcc详细研究编译/链接过程 .
所以做了一个测试.c文件并使用gcc的详细选项编译它 .

gcc -v main.c

但在冗长的消息中,我无法找到它指向libc的任何地方 . 我找到的唯一相关(可能是)的东西是crtn.o和crtend.o

但是,当我这样做

readelf -d a.out

我可以找到对libc.so.6的依赖 . 所以我很困惑gcc是否输出与动态链接到libc相关的消息,或者我错过了什么 .

链接器的相关消息如下:

LIBRARY_PATH = / usr / lib / gcc / x86_64-linux-gnu / 4.8 /:/ usr / lib / gcc / x86_64-linux-gnu / 4.8 /../../../ x86_64-linux-gnu /: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/ usr / lib中/ x86_64的-Linux的GNU /:/ usr / lib中/../ LIB /:/ usr / lib中/ GCC / x86_64的-Linux的GNU / 4.8 /../../../:/ LIB / :/ usr / lib / COLLECT_GCC_OPTIONS =' - v'' - mtune = generic''-march = x86-64'/usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot = / - build -id --eh-frame-hdr -m elf_x86_64 --hash-style = gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro / usr / lib / gcc / x86_64-linux-gnu / 4.8 /../../../ x86_64-linux-gnu / crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../ . ./x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L / usr / lib / gcc / x86_64-linux-gnu / 4.8 -L / usr / lib / gcc / x86_64-linux-gnu / 4.8 /../../../ x86_64-linux-gnu -L / usr / lib / gcc / x86_64-linux-gnu / 4.8 /../../ . ./../lib -L / lib / x86_64-linux-gnu -L / lib /../ lib -L / usr / lib / x86_64-linux-gnu -L / usr / lib /../ lib -L /usr/lib/gcc/x86_64-linux-gnu/4.8/../../ .. / tmp / ccYoVOxt.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed / usr / lib / gcc / x86_64-linux-gnu / 4.8 / crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o

1 回答

  • 4

    您正在寻找的库操作数是 -lc . 它在那里,使用Ctrl F找到它 .

    另见the ld documentation .

相关问题