C语言如何编译生成库文件?

一升米 2017-12-29 03:43:39
本人刚学C语言,想编写一个接口程序,然后封装成点a(.a) 文件,或者其他文件,我也不懂都有哪些文件,然后其他C程序,使用我的项目时候,只要把我的.a文件那过去(或者别的类型文件也行例如.lib,我是在linux下使用),#include一个我的.h头文件就能执行了。一般像这种项目之间相互配合使用哪种方式啊,还是说我把我的源码给其他项目,供他直接调用??没做过,不太懂,求大神指点。我想知道这个.a文件是啥,大概需要学习哪个方面的知识,才能了解这个.a或者说库文件。第二个文件如何生成这个接口,需要编译?需要看makefile??还需要学什么别的?谢谢了
...全文
1034 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-01-03
  • 打赏
  • 举报
回复
百度搜相关关键字。
一升米 2018-01-02
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
可以动态链接、静态链接,当然也可以直接以提供头文件和源文件,通常为了保护你的代码,一般以库文件方式提供,书的话推荐《程序员的自我修养--链接、装载与库》
是的,我就是对“动态链接、静态链接,当然也可以直接以提供头文件和源文件”都分不清,不知道库文件咋生成,我研究看看,谢谢
一升米 2018-01-02
  • 打赏
  • 举报
回复
引用 1 楼 hzy_76 的回复:
一般我们用gcc吧,-c选项就可以只编译而不链接,生成库文件(习惯上扩展名为o),如:

gcc -c test.c
这个库文件就可以被其他程序引用、链接了。 如果需要静态库文件(习惯上扩展名为a),可以使用ar命令:

ar rcs libtest.a test.o
这样生成的库文件以lib开头,其他程序编译时用-ltest即能使用它。 动态库文件则使用-shared参数:

gcc -fPIC -shared -o test.so test.c
收到,谢谢,我要的就是这些东西,静态库文件是什么,我百度看看,先学习试试,然后我再看看ar编译的含义,再瞅瞅动态库,我就是对这些都蒙蒙的,还不知道学名是啥,不知道应该怎么学
paschen 2017-12-29
  • 打赏
  • 举报
回复
可以动态链接、静态链接,当然也可以直接以提供头文件和源文件,通常为了保护你的代码,一般以库文件方式提供,书的话推荐《程序员的自我修养--链接、装载与库》
老马何以识途 2017-12-29
  • 打赏
  • 举报
回复
一般我们用gcc吧,-c选项就可以只编译而不链接,生成库文件(习惯上扩展名为o),如:

gcc -c test.c
这个库文件就可以被其他程序引用、链接了。 如果需要静态库文件(习惯上扩展名为a),可以使用ar命令:

ar rcs libtest.a test.o
这样生成的库文件以lib开头,其他程序编译时用-ltest即能使用它。 动态库文件则使用-shared参数:

gcc -fPIC -shared -o test.so test.c

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧