OBJ = abc.o
abc.a:$(OBJ)
ar crv abc.a $(OBJ)
请问这里做的这个动作产生了个.a文件是做什么用的?ar crv是什么意思。
是否有系统的文档介绍这些内容呢?
新手问题,谢谢大家
Linux makefile&shell的一个问题
答案:3 悬赏:40 手机版
解决时间 2021-02-10 03:46
- 提问者网友:欺烟
- 2021-02-09 08:57
最佳答案
- 五星知识达人网友:第幾種人
- 2021-02-09 09:46
ar 命令是用来将若干 .o 文件打包成(静态)库文件。 按照习惯,库文件后缀名都是 .a
crv 分别是 ar 命令的三个参数,cr的意思是创建指定.a文件(如果不存在),并将.o文件加入到这个.a文件中。 v 的意思是让 ar 命令在执行的时候打印更多的提示信息。
ar crv abc.a $(OBJ) 就是将 abc.o 打包到库文件 abc.a 中的意思。
更多信息可以 man ar 来看到。
crv 分别是 ar 命令的三个参数,cr的意思是创建指定.a文件(如果不存在),并将.o文件加入到这个.a文件中。 v 的意思是让 ar 命令在执行的时候打印更多的提示信息。
ar crv abc.a $(OBJ) 就是将 abc.o 打包到库文件 abc.a 中的意思。
更多信息可以 man ar 来看到。
全部回答
- 1楼网友:等灯
- 2021-02-09 11:51
我不是高手哈写了一个你试试:
vpath sum.o sum
vpath sum.h sum
vpath minus.h minus
vpath minus.o minus
vpath multi.h multi
vpath multi.o multi
vpath divide.h divide
vpath divide.o divide
test:main.o sum/sum.o minus/minus.o multi/multi.o divide/divide.o
(tab) gcc -o $@ main.o sum/sum.o minus/minus.o multi/multi.o divide/divide.o
main.o:main.c sum.h minus.h multi.h divide.h
(tab) gcc -c $< -i sum -i minus -i multi -i divide
- 2楼网友:独钓一江月
- 2021-02-09 10:17
程序运行的时候依赖库文件。
库文件分为.so的动态库和.a的静态库。动态库优点是,减少了程序占用的空间。而静态库则相反。
man ar可以得到更多信息。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯