Linux makefile&shell的一个问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux makefile&shell的一个问题相关的知识,希望对你有一定的参考价值。

OBJ = abc.o

abc.a:$(OBJ)
ar crv abc.a $(OBJ)

请问这里做的这个动作产生了个.a文件是做什么用的?ar crv是什么意思。
是否有系统的文档介绍这些内容呢?
新手问题,谢谢大家

参考技术A ar 命令是用来将若干 .o 文件打包成(静态)库文件。 按照习惯,库文件后缀名都是 .a

crv 分别是 ar 命令的三个参数,cr的意思是创建指定.a文件(如果不存在),并将.o文件加入到这个.a文件中。 v 的意思是让 ar 命令在执行的时候打印更多的提示信息。

ar crv abc.a $(OBJ) 就是将 abc.o 打包到库文件 abc.a 中的意思。

更多信息可以 man ar 来看到。本回答被提问者采纳
参考技术B 程序运行的时候依赖库文件。
库文件分为.so的动态库和.a的静态库。动态库优点是,减少了程序占用的空间。而静态库则相反。

man ar可以得到更多信息。
参考技术C ar 是创建库文档的工具。

crv 是 ar命令的参数,也就是创建 abc.a库文件。

你这些内容是哪里来的,应该有所介绍吧

Makefile,Shell command,Shell Language 之间的联系

1. Makefile 

  首先要知道Makefile 是什么东西,Makefile 是一个指令文件,里面存储着自定义的命令(可以借助已有的命令创造而来)在不同的系统下对Makefile 的区别不一样,Linux/Unix系统中系统会先搜寻默认目录以及环境变量中路径中是否有Makefile 或 makefile(此类文件没有扩展名)但在Windows下是nmake 

Makefile文件中语法或用法:

# 一些简单声明,变量的声明等

指令:for example  ----->       clean: (接上一些依赖文件,依赖文件一般出现在文件编译或者生成过程中)

  执行的命令                     rm  -rf  ./*   # delete all of files in current directory

........

以此类推

 

最后就可以在终端 使用  make + Makefile 中自定义的指令去执行指令下的命令或操作

 

2.Shell command

  Shell command 是指在系统中已有的命令或者自我开发(要将自我开发的命令添加到环境变量中,否则使用时会弹出not found command:) 的命令去执行一些或者做一些事情 就好比   在Arch-linux版本下  使用 Pacman -S install  Atom ,是一件单一的命令或者是单一的事情

 

3. Shell Project Language

  这里的Shell是一门脚本编程语言,他有他的语法(Shell 编程) 是多个 Shell Command  的集合,这里可以完成一件整个过程的 事。比如 :在shell 中 写一些默认的东西到一个新文件里, "文件内容" >> (文件流向在内容后追加)  文件名                        # > 是重新流向

   比如 mailx 这个命令就可以在命令中给指定的人发邮件等,比如在shell 中连接Oracle数据库 并把执行的结果流向一个新文件。

 

以上是关于Linux makefile&shell的一个问题的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式linux核心课程 2.uboot和系统移植-第2部分-2.2.补基础之shell和Makefile

Makefile,Shell command,Shell Language 之间的联系

Shell和Makefile

makefile :=和+=

补基础之shell 和makefile

makefile中=:=和+=的区别