主页 > 电脑硬件  > 

Linux环境基础开发工具的使用(三)

Linux环境基础开发工具的使用(三)
五、Linux项目自动化构建工具-make/Makefile

make:是一条指令。

makefile:是一个当前目录下的文件。

第一行:依赖关系。

第二行:依赖方法。

clean是空依赖关系。

编译文件清理

背景

会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。

一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,

makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,

甚至于进行更复杂的功能操作。

makefile带来的好处就是——“自动化编译”,一旦写好,

只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

make是一个命令工具,是一个解释makefile中指令的命令工具,

一般来说,大多数的IDE都有这个命令,

比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。

可见,makefile都成为了一种在工程方面的编译方法。

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

理解 依赖关系、依赖方法

先找makefile文件,在makefile文件种找依赖关系和依赖方法,根据源文件帮我们形成对应的目标文件。

mycode是依赖关系的目标文件

mycode依赖mycode.c这个源文件

gcc -o mycode mycode.c这个叫做依赖方法


makefile的自动化推导(栈式结构)

形成mycode就要先形成mycode.o

形成mycode.o就要先形成mycode.s

形成mycode.s就要先形成mycode.i

形成mycode.i就要先找到mycode.c

这个顺序与输入顺序无关。


是否能重新make

(在不修改源代码的基础上)为什么只能make一次

因为源文件没修改,形成的目标文件内容不需要(没有必要)再更新。提高编译效率。


修改源代码可以重新make

修改前:

修改后:


怎么做到的?(怎么知道我当前的文件要不要被编译)

一定是源文件形成可执行文件的,先有源文件,再有可执行文件。

一般而言,源文件的修改时间 比 形成可执行文件的时间要 老。

如果我们修改了源文件,历史上还有可执行文件,那么源文件最近修改时间 比 可执行文件形成时间要 新。

how:

只需要比较可执行程序的最近修改时间 和 源文件的最近修改时间

.exe 新于 .c 源文件是老的,不需要重新编译。

.exe 老于 .c 源文件是新的,需要重新编译。

一般而言:.exe 形成时间 与 .c 最近修改时间 一般不会一样。

一般比较modify时间即可(对modify时间有疑问的同学,移步至“补充stat”)

结论:make会根据源文件和目标文件的新旧,判定是否需要重新执行依赖关系进行编译!(不一定总是执行)


如果想让对应的依赖关系总是执行呢?

.PHINY:伪目标 -> 总是被执行


如何清理

clean是空依赖关系


一般是让clean作为伪目标,总是被执行。


如果把clean放在最前面,则使用make命令默认执行第一行

所以不建议把清理放在最前面

make后面直接跟目标文件:指定名称 执行该目标文件的依赖关系与依赖方法

特殊符号

$@是目标文件 也就是冒号左边的

$^是源文件 也就是冒号右边的

在编译的时候,$@、$^会回现出来

如果不想让它回现出来,就在前面加上@


补充 stat

显示时间

文件=文件内容+文件属性

修改文件内容:

修改文件属性:

要把时间都修改成最近的时间

修改access时间为最近时间


六、使用git 命令行

git具有网络功能的版本控制器,是开源的,客户端和服务端是一体的。

安装 git yum install git

已经下载好了是这样的

git版本

在 Github 创建项目

使用 Github 创建项目

注册账号

这个比较简单, 参考着官网提示即可. 需要进行邮箱校验.

创建项目

登陆成功后, 进入个人主页, 点击左下方的 New repository 按钮新建项目

然后跳转到的新页面中输入项目名称(注意, 名称不能重复, 系统会自动校验. 校验过程可能会花费几秒钟). 校验

完毕后, 点击下方的 Create repository 按钮确认创建.

在创建好的项目页面中复制项目的链接, 以备接下来进行下载.

下载项目到本地

创建好一个放置代码的目录.

这里的 url 就是刚刚建立好的 项目 的链接.

这个.git就是本地仓库

git中的隐藏目录

将代码克隆到了本地中,但是没有被仓库管理起来

三板斧第一招: git add

将代码放到刚才下载好的目录中

git clone [url]

将需要用 git 管理的文件告知 git

三板斧第二招: git commit

提交改动到本地

最后的 "." 表示当前目录

提交的时候应该注明提交日志, 描述改动的详细内容.

三板斧第三招: git push

同步到远端服务器上

需要填入用户名密码. 同步成功后, 刷新 Github 页面就能看到代码改动了.

配置免密码提交

git本地免密码和账号pull、push_没有git账号怎么拉代码-CSDN博客

git add [文件名]

git commit .

git push

其他问题

git首次使用需要配置邮箱和用户名

why?

对代码进行溯源


要开源或者删除仓库 该怎么办?


.gitignore问题

在这里的后缀将不会上传至远端

最终只有.ppp的成功上传,同时,.gitignore也改变了

查看提交记录

标签:

Linux环境基础开发工具的使用(三)由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Linux环境基础开发工具的使用(三)