【linux】在linux操作体系下快速认识开辟环境并上手开辟工具——体验不一样 ...

打印 上一主题 下一主题

主题 520|帖子 520|积分 1560

个人主页:东洛的克莱斯韦克-CSDN博客
  
  祝福语:愿你拥抱自由的风
  目录
vim编辑器
Linux编译器:gcc/g++利用
gcc和g++的选项
编译过程
动静态库的链接
Linux项目标主动化构建
生成可执行步伐
清理可执行步伐
Linux调试器-gdb利用
git和gitee


vim编辑器

vim是文本编辑器,可用于编写代码
【linux】怎样优雅的利用vim编辑器-CSDN博客
Linux编译器:gcc/g++利用

保存代码的文件属于文本文件,盘算机并不认识文本文件,需要把文本文件转成二进制文件代码才能运行。
gcc和g++就是这样的工具,gcc是用来编译C语言的,g++是用来编译C++的。小编只需讲清gcc即可,gcc的概念和选项完全可以迁徙到g++。
gcc和g++的选项

下面是gcc和g++的选项,小编会用编译过程和实例详解一些常用选项
      -E       只激活预处理惩罚   ,   这个不生成文件   ,   你需要把它重定向到一个输出文件里面        -S        编译到汇编语言不进行汇编和链接        -c        编译到目标代码        -o       文件输出到 文件        -static       此选项对生成的文件采用静态链接        -g    生成调试信息。   GNU    调试器可利用该信息。        -shared       此选项将只管利用动态库,所以生成文件比力小,但是需要体系由动态库   .        -O0        -O1        -O2        -O3    编译器的优化选项的   4   个级别,   -O0   表现没有优化   ,-O1   为缺省值,   -O3   优化级别最高        -w        不生成任何告诫信息。        -Wall    生成所有告诫信息。    编译过程

   预处理惩罚  (  进行宏更换  )     预处理惩罚功能重要包括宏界说  ,  文件包含  ,  条件编译  ,  去注释等    预处理惩罚指令是以  #  号开头的代码行    一般把预处理惩罚后的代码放到以.i为后缀的文件中,不是以.i为后缀也不影响。   
     
     编译(生成汇编)     在这个阶段中  ,gcc   首先要检查代码的规范性、是否有语法错误等  ,  以确定代码的实际要做的工作  ,  在检查 无误后,gcc   把代码翻译成汇编语言    一般把编译的代码放到以.s为后缀的文件中,不是以.s为后缀也不影响。   
   
        汇编(生成机器可辨认代码)        汇编阶段是把编译阶段生成的   “.s”   文件转成目标文件    ,这里的目标文件本质是盘算性能看懂的二进制文件。      
           连接(生成可执行文件或库文件)           在成功编译之后    ,    就进入了链接阶段.o文件已经是二进制文件了,为什么不是终极的可执行文件呢?       因为我们的代码中调用了一些C语言的库函数,而我们的代码中只有库函数的声明和调用,库函数的实如今C语言的库中,对于任何一门语言都需要将本身的库安装在体系的特定路径下。
而链接方式有两种,静态链接和动态链接
动静态库的链接

   静态库是指编译链接时  ,  把库文件的代码全部参加到可执行文件中  ,  因此生成的文件比力大  ,  但在运行时也 就不再需要库文件了。其后缀名一般为“.a”      动态库与之相反  ,  在编译链接时并没有把库文件的代码参加到可执行文件中  ,  而是在步伐执行时由运行时链接文件加载库,  这样可以节省体系的开销。动态库一般后缀名为  “.so”,  gcc   在编译时默认利用动态库。     完成了链接之后  ,gcc   就可以生成可执行文件(默认环境下gcc选择动态链接)     动静态链接的优缺点:     静态链接之后不再需要依赖函数库,可独立存在,但文件的体积变得会很大。     动态链接之后文件的体积很小,但必须依赖函数库才能运行。     链接后的可执行步伐可用   ./ 运行     如下示例(gcc不带选项时可以直接生成可执行步伐)     
     Linux项目标主动化构建

  我们每次要生成可执行步伐都需要输入gcc或g++指令,清理可执行步伐都需要用rm指令。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,乃至于进行更复杂的功能操作。我们需要不断输入gcc指令或g++指令和rm指令来完成上述操作吗?
  答案是不需要,我们只需要在源文件目录下创建名为makefile的文件,将生成和清理可执行步伐方案的指令保存到该文件,再通过make一个命令工具解释makefile文件中的指令完成项目标编译和清理工作。
  也就是说makefile是文件,make是指令,以此来完成主动化构建。
  那么怎么在在makefile文件中保存相干指令呢?假设我们有test.c源文件,想要生成test可执行步伐。需要有如下格式
  生成可执行步伐

  依赖关系,两个文件的依赖关系用冒号分隔,冒号左边的文件依赖于冒号右边的文件,如果可执行步伐依赖多个源文件,多个源文件之间需要用冒号分隔。
  test : test.c 
  依赖方法,文件之间建立关系之后需要指定方法。
  gcc test.c -o test
  如下示例
  

  清理可执行步伐

  rm依赖方法不需要构建文件之间的依赖关系,其依赖关系为空
  如下示例
  

  Linux调试器-gdb利用

     步伐的发布方式有两种,   debug   模式和   release   模式        Linux gcc/g++   出来的二进制步伐,默认是   release   模式        要利用   gdb   调试,必须在源代码生成二进制步伐的时候   ,    加上    -   g    选项               退出:     ctrl + d         或     quit                  list     /     l      行号:显示     binFile     源代码,接着上次的位置往下列,每次列     10     行。                  list     /     l           函数名:列出某个函数的源代码。                  r     或     run     :运行步伐。                  n      或      next     :单条执行。                  s     或     step     :进入函数调用                  break     (     b     )      行号:在某一行设置断点                  break           函数名:在某个函数开头设置断点                  info break      :检察断点信息。                  finish     :执行到当前函数返回,然后挺下来等候命令                  print     (     p     )     :打印表达式的值,通过表达式可以修改变量的值大概调用函数                 
           p       变量:打印变量值。                      set var      :修改变量的值                      continue      (      或      c      )      :从当前位置开始连续而非单步执行步伐                      run      (      或      r      )      :从开始连续而非单步执行步伐                      delete breakpoints      :删除所有断点                      delete breakpoints n      :删除序号为      n      的断点                      disable breakpoints      :禁用断点                      enable breakpoints      :启用断点                      info      (      或      i      )       breakpoints      :参看当前设置了哪些断点                      display       变量名:跟踪检察一个变量,每次停下来都显示它的值                      undisplay      :取消对先前设置的那些变量的跟踪                      until X      行号:跳至      X      行                      breaktrace      (      或      bt      )      :检察各级函数调用及参数                      info      (      i      )       locals      :检察当前栈帧局部变量的值                      quit      :退出      gdb                     git和gitee

  git是一款开源的软件,它即可以是服务端也可以是客户端。git的重要功能是保存代码的不同版本,也可以完成多人协作。
  gitee是基于git内核写的网页版git,只需在官网注册账号即可利用。
  在Linux操作体系下载git只需输入yum install git指令即可
  怎样将本地代码推送到远端仓库呢(gitee)
     下载项目到本地        创建好一个放置代码的目录   .        git clone [url]       这里的    url    就是刚刚建立好的 项目 的链接      
         三板斧第一招   : git add        将代码放到刚才下载好的目录中           git add [文件名]              先将要提交的文件拷贝到仓库目录下         
            
                     三板斧第二招     : git commit              提交改动到本地                    git commit -m "日记信息"                       提交的时候应该注明提交日记       ,        描述改动的详细内容                  
                         如果是第一次利用git,会提示你输入两条指令,一条指令用来保存你的邮箱,一条保存你的名字                                 三板斧第三招        : git push                                git push                              同步到远端服务器上                       需要填入用户名密码                             


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表