C编译器如何发现-lm指向文件libm.a?

C编译器如何发现-lm指向文件libm.a?,第1张

概述什么是Linux中C编程的.a文件?是库文件吗?To merge with the math library libm.a you would type cc -o program_name prog.c -lm when you compile the program. The -lm means: add in libm. If we wanted

什么是Linux中C编程的.a文件?
是库文件吗?

To merge with the math library libm.a you would type cc -o program_name prog.c -lmwhen you compile the program. The -lm means: add in libm. If we wanted to add in the socket library libsocket.a to do some network programming as well,we would type cc -o program_name prog.c -lm -lsocketand so on. 

这里编译器如何发现-lm指向文件libm.a,-lsocket指向libsocket.a?

如果我们将头文件添加到程序中,我们是否必须在编译时提及库?

最佳答案正如Ignacio所说,.a文件是静态库. “a”代表“archive”,.a文件由名为“ar”的程序构建.

每个.a文件包含一个或多个.o文件和名称索引.在链接过程中,只有包含已使用名称的.o文件才会包含在最终程序中.这样就不会包含整个C库,只会复制像“printf”这样的函数.

编译器如何找到库?它有一个内置的库路径集合,可以搜索.举个例子,如果被问到,GCC会告诉你它的搜索路径:

# gcc -print-search-dirsinstall: /usr/lib/gcc/i686-redhat-linux/4.4.4/programs: =/usr/libexec/gcc/i686-redhat-linux/4.4.4/:/usr/libexec/gcc/i686-redhat-linux/4.4.4/:/usr/libexec/gcc/i686-redhat-linux/:/usr/lib/gcc/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/:/usr/libexec/gcc/i686-redhat-linux/4.4.4/:/usr/libexec/gcc/i686-redhat-linux/:/usr/lib/gcc/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../i686-redhat-linux/bin/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../i686-redhat-linux/bin/librarIEs: =/usr/lib/gcc/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../i686-redhat-linux/lib/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../i686-redhat-linux/lib/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../:/lib/i686-redhat-linux/4.4.4/:/lib/:/usr/lib/i686-redhat-linux/4.4.4/:/usr/lib/

您可以使用“-L / path”选项添加更多库搜索路径.

在这些路径中,它首先搜索以“.so”扩展名命名的“动态库”.然后它搜索具有“.a”扩展名的静态库.它总是在名称的前面添加“lib”.

总结

以上是内存溢出为你收集整理的C编译器如何发现-lm指向文件libm.a?全部内容,希望文章能够帮你解决C编译器如何发现-lm指向文件libm.a?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1046321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存