【发布时间】:2017-03-25 12:02:03
【问题描述】:
我写了一个简单的 C 程序,prova.cint main() {return 0;}
我想看看链接到它的库,所以:
- 我用
gcc -Wall -m32 -stdc=99 -c prova.c -o prova.o编译它 - 我链接了
gcc -m32 -Wl,--verbose prova.o -o prova
现在,当我检查我的标准输出时,我注意到一些库无法打开。
为什么会这样?为什么他们试图打开?为什么会失败?
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crt1.o succeeded
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crt1.o
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crti.o succeeded
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/crti.o
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o succeeded
/usr/lib/gcc/x86_64-linux-gnu/4.8/32/crtbegin.o
attempt to open prova.o succeeded
prova.o
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc.so failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc.a succeeded
attempt to open /usr/lib/gcc/x86_64-linux-gnu/4.8/32/libgcc_s.so succeeded
【问题讨论】:
-
"如果没有打开,为什么要链接?"他们不是。当它看到
-lgcc时,链接器尝试使用 libgcc.so 来满足它,但失败了,所以它接下来尝试 libgcc.a。 -
@MarcGlisse 这应该是一个答案。
-
您好,感谢您帮助我!我编辑了这个问题,以便更清楚我的意思。我问的问题不清楚。
-
我想知道为什么链接器试图打开它们,然后为什么它们无法打开?
标签: gcc linker shared-libraries libraries ld