【问题标题】:Not able to find when gcc links to libc无法找到 gcc 何时链接到 libc
【发布时间】:2016-10-04 12:58:45
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • 我已经编辑了问题,我使用了 gcc -v main.c。并为链接器添加了相关消息
  • @melpomene 我已经回滚了您的编辑,因为它使问题更难阅读。

标签: c gcc


【解决方案1】:

您要查找的库操作数是-lc。就在里面,用Ctrl+F找到它。

另见the ld documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 2011-08-06
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多