GNU GCC / LD:默认链接哪些库?

时间:2014-07-20 14:40:13

标签: gcc linker default libraries

我是一名普通的C程序员,有一些关于GNU GCC / LD内部构件的问题。

我注意到,在将一系列目标文件传递给GCC(例如gcc main.o otherfile.o)时,GCC会自动链接libc.a库文件,而不会在选项中明确指定-lc。同样,当我使用ncurses编译程序时,我只需要指定-lncurseslibtinfo.a自动链接(无需指定-ltinfo)。换句话说,即使ncurses函数使用libtinfo中的函数(例如,unctrl()),我也不需要显式链接libtinfo。

怎么可能?

GCC / LD是否有一个"默认库列表"链接时它在哪里寻找丢失的符号?如果存在这样的表,它在哪里以及如何配置?

1 个答案:

答案 0 :(得分:2)

直接的答案是,您可以通过将-v添加到链接命令行来查看命令行选项链接的库。这将显示执行时的命令。

C库和GCC支持库自动链接;其他库必须手动指定。

-lncurseslibtinfo.alibtinfo.so?)的情况完全不同。在那里,用于构建libncurses.so的链接命令告诉链接器该库还需要-ltinfo,因此它会自动获取额外的库。