Linux makefile&shell的一个问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux makefile&shell的一个问题相关的知识,希望对你有一定的参考价值。
OBJ = abc.o
abc.a:$(OBJ)
ar crv abc.a $(OBJ)
请问这里做的这个动作产生了个.a文件是做什么用的?ar crv是什么意思。
是否有系统的文档介绍这些内容呢?
新手问题,谢谢大家
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