| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> Linux~一些基本开发工具的使用(yumvimgccgdbmakefile) -> 正文阅读 |
|
[开发工具]Linux~一些基本开发工具的使用(yumvimgccgdbmakefile) |
目录 一.yum——安装软件????????yum就类似手机上的应用市场,一些特定的组织或者个人把Linux下相关的软件都放在了一个特定的服务器上,yum会自动在特定的服务器上找到对应的服务,并下载下来,同时yum还会把当前服务所需要的其他服务(软件/依赖关系)都下载到你的主机上。 yum list:查看可以安装的软件 yum install:安装软件 yum remove:删除软件 二.Vim——文本编辑器(1).命令模式光标相关:
补充:
文本操作:
(2).底行模式
(3).插入模式i,a,o都可以进入插入模式
tips:给对应用户配置sudo命令?[root@VM-8-12-centos ~]# vim /etc/sudoers 在root用户下输入指令 vim /etc/sudoers,修改sudoers文件中 ## Allow root to run any commands anywhere? 这一行下面的内容,将需要加入sudo命令的用户加入这里即可。 一些注意事项1.在插入模式下,Linux中的光标是覆盖在字符上面的,此时backspace删除和插入字符是作用在当前光标之前的。 2.Vim卡死,这并不是Linux死机,或者vim卡住,而只是按了Ctrl + s后,vim停止向终端输出。解决方法:退出这种状态,按下Ctrl + q 3.一般情况下,底行模式和插入模式之前必须经过命令模式,不能直接切换
无论当前处于什么模式,esc一定可以回到命令模式 三.gcc/g++——编译器(1).gcc如何完成翻译的四个过程1.gcc不带选项编译文件,默认生成的文件名是a.out,再编译,还是a.out 1. 预处理(进行宏替换) 2. 编译(生成汇编) 3. 汇编(生成机器可识别代码) 4. 链接(生成可执行文件或库文件) 这四个步骤可以叫做是翻译 1.gcc -E?mytest.c -o mytest.i,将源文件进行预处理,完成以后生成mytest.i文件(预编译文件)(预处理后的文件我们一般命名为.i,注意这里需要指明文件名)
2.gcc -S mytest.i -o mytest.s,将预处理后的.i文件进行编译,完成以后生成mytest.s文件(汇编文件)(这里不-o指定文件名也可以,但是为了和前面的-E统一,还是指定一下)
3.gcc -c?mytest.s -o mytest.o ,将编译以后的汇编文件,也就是.s文件,进行汇编操作,完成以后生成mytest.o文件(可重定向的目标文件,一个二进制文件,在windows下就是mytest.obj)
注:生成的这个二进制文件我们还是无法执行 我们可以使用od命令查看二进制文件,让它以八进制或者十六进制的形式显示
4.gcc mytest.o -o mytest ,将汇编以后的目标文件生成可执行文件mytest(这里不加后缀名也可以)
ps:语言给我们提供的一般是一套头文件+一套库文件,我们使用printf的函数,实际上就是在库里面实现的。 记忆方法/-o选项的使用1.我们在指定输出文件的名称时,这两种写法都行,-o表示输出到目标文件
2.前三个过程使用选项和生成文件的记忆方法:
四.gdb——调试器Q:为什么要加-g才能调试程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上-g选项,使其变成debug模式 如果一个程序是可以被调试的,该程序的二进制文件一定如入了一些debug信息! 我们看到release模式下,生成的可执行文件的大小比debug模式下要小,因为加上-g,变成debug模式后,加入了一些debug信息,所以才能对其进行调试。 常用选项
五.make/Makefile——自动化构建工具(1).概念1.make是一个命令,Makefile是一个文件,两个搭配使用,完成项目自动化构建(形成可执行程序,不需要我们自己gcc项目中的所有文件) 2.依赖关系 Makefile内部可以让我们写上依赖关系和依赖方法 只有依赖关系和依赖方法共同作用才可以达到目的 (2).使用1.touch 一个名为Makefile文件(也可以是makefile) 添加依赖关系/依赖方法2.比如我们现在有mytest.c文件,要生成mytest的可执行文件。 此时mytest的生成依赖于mytest.c,依赖方法是通过gcc 第一行是依赖关系前者:(:表示依赖,这里表示前者依赖后者)后者,第二行是依赖方法(注意第二行必须是Tab键开头)
3.此时我们直接使用make指令单走就可以自动根据mytest.c生成mytest可执行文件。此时不做任何修改再make,会提示已经是最新的了,无法再make了。 添加清理功能1.在Makefile文件中添加:
????????注意这里的.PHONY:clean就是一个修饰,表示指定伪目标,对当前文件可以一直执行make clean。后面的clean :后面是空,实际上就是表示没有依赖关系。第二行的就是依赖方法,意思就是可以直接执行依赖方法,不需要依赖关系。而上面的test:后面就有依赖关系,就是要依赖test.cpp 2.直接make clean,会发现刚刚make生成的可执行文件没了。 3.Linux下的make和make clean就类比于vs中的生成解决方案和清理解决方案 Q:.PHONY有什么用
(3).原理1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2.如果找到,它会找文件中的第一个目标文件,比如这里我们make的时候会找第一个目标文件,也就是这里的mycode,并把其当做最终的目标文件。 3.如果目标文件不存在,根据依赖关系找mycode所依赖的文件mycode.o,找到后执行依赖方法生成文件。 4.如果不存在,就继续往后找,找当前mycode.o依赖的文件,找到以后执行依赖方法生成,然后在返回去生成原来的目标文件。执行流程像一个栈 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 15:53:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |