安装gcc

1、apt-get命令是debain Linux发新版的APT软件包管理工具。

dabianubuntudeepin等Linux系统通过以下命令:

安装gcc:Shell输入sudo apt-get install gcc命令,然后回车确定就可以了。

安装g++:Shell输入sudo apt-get install g++命令,回车确定。

用于我这里已经安装过,所以显示gcc 已经是最新版。



2、yum命令是在FedoraRedHat以及SUSE中基于rpm的软件包管理器。

Shell输入sudo yum install gcc命令,sudo yum install gcc-g++命令。

使用gcc

0、使用vim编写程序,命令vim main.c编写如下代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("hello world!\n");
exit(0);
}



1、预编译:命令gcc -E mian.c -o main.i预编译,生成main.i文件。其中-E表示预编译,main.c是源文件,main.i表示生成的文件(-o 表示目标Object)



2、编译:命令gcc -S main.i -o main.s编译,生成main.s文件



3、汇编:命令gcc -c main.s -o main.o汇编,生成main.o文件



4、连接:命令gcc -o mian.o -o main连接,生成可执行文件



5、执行:命令./main执行。./表示当前目录。



6、直接编译

1、可以用命令gcc -c main.c -o main.o命令一步编译至汇编阶段。



2、可以用命令gcc -o main main.c命令将c程序一步编译完成。此命令可用于简化c程序编译步骤。



另外,有些程序依赖动态库在编译时在后边加上-l库名

比如2.c程序中用到了#include <math.h>编译时应该加上动态共享库名

gdb调试

首先安装gdb,apt-get install gdb

1、编译程序gcc -o main main.c -g,加上-g生成调试信息

2、gdb main开始调试



命令:

l 显示代码    p 打印

b 加断点     q 退出

r 运行      info break

n 单步调试    info threads

s 进入函数    threads id

finish 退出函数  set follow-fork-mode child

bt 显示函数调用栈关系

此外,还有以下几种调试
  1. core文件调试 ulimit -c size 设置生成文件大小(程序崩溃时生成)
  2. strace 跟踪打印系统调用 -p pid
  3. ltrace 跟踪库函数

Linux基础学习 | gcc、g++的安装和使用的更多相关文章

  1. Linux基础学习【规则与安装】

    一.主分区.扩展分区与逻辑分区的特性: 主分区与扩展分区最多可以有4个(硬盘的限制) 扩展分区最多只能有1个 逻辑分区是由扩展分区持续切割出来的分区 能够被格式化后作为数据访问的分区为主分区和逻辑分区 ...

  2. linux基础学习之软件安装以及常用命令

    linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...

  3. Linux基础学习系列目录导航

    Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...

  4. Linux 基础学习1

    目录 Linux 基础学习 用户登录 终端 交互式接口 bash 修改ssh连接慢的步骤 命令提示符 显示提示符格式 命令 别名 命令格式 获取命令的帮助信息 man bash 快捷键 tab 键 引 ...

  5. Linux 基础学习2

    目录 Linux 基础学习2 文件目录结构 文件命名规范 文件系统结构 linux应用程序的组成 绝对路径和相对路径 目录名和基名 切换目录 切换到家目录 切换到上一次的目录 显示当前的工作目录 列出 ...

  6. [转]Linux下用gcc/g++生成静态库和动态库(Z)

    Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10|  分类: linux |  标签:链接库  linux  g++  gcc  |举报|字号 订阅     ...

  7. linux基础学习路线&review

    linux基础学习网址: https://www.runoob.com/linux/linux-tutorial.html 比较重点的是这个启动过程的介绍学习:https://www.runoob.c ...

  8. Linux基础学习(全)

    使用的Linux发行版本为Redhat 1.Linux(RedHat)基础学习-命令行使用入门 2.Linux(RedHat)基础学习-文件寻址与管理 3.Linux(RadHat)基础学习-vim编 ...

  9. Linux 之 编译器 gcc/g++参数详解

    2016年12月9日16:48:53 ----------------------------- 内容目录: [介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++ ...

随机推荐

  1. 从零开始,开发一个 Web Office 套件(7):新的问题—— Click 事件的 z-index

    这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...

  2. 两天两夜,1M图片优化到100kb!

    坦白从宽吧,我就是那个花了两天两夜把 1M 图片优化到 100kb 的家伙--王小二! 自从因为一篇报道登上热搜后,我差点抑郁,每天要靠 50 片安眠药才能入睡. 网络上曝光的那些关于一码通的消息,有 ...

  3. git--新建分支&提交代码

    本地文件都删除后,本地分支也随之被删除了: 重新clone:git clone - (-为代码在git上的地址,不同协议会有不同形式的地址,例如:HTTPS.SSH,我用HTTPS) 进入克隆完成的代 ...

  4. .NetCore Web Api 利用ActionFilterAttribute统一接口返回值格式

    .Net Core 同 Asp.Net MVC一样有几种过滤器,这里不再赘述每个过滤器的执行顺序与作用. 在实际项目开发过程中,统一API返回值格式对前端或第三方调用将是非常必要的,在.NetCore ...

  5. tensorflow core 核心目标依赖图

    Tensorflow的核心代码在core模块中,56w行的代码量让人望而生畏,熟悉了bazel工具之后,发现BUILD文件是理清代码结构的很好的资源,但使用bazel query语法提取出来//ten ...

  6. 新的ASP.NET Core 迁移指南

    最近在微信里做了一个调查: Web Forms应用程序升级到.NET 6, 收到550份调查,调查还在继续,欢迎参与调查.可以访问链接:https://wj.qq.com/s2/9822949/ac3 ...

  7. LGP2522题解

    双倍经验题. 柯以看成是P3455的扩展. 首先这个范围内是数我们柯以用类似二维前缀和的思想,看成: \(ans(a,b,c,d)=ans(1,b,1,d)+ans(1,a-1,1,c-1)-ans( ...

  8. 终结初学者对ElasticSearch、Kibana、Logstash安装的种种困难

    项目中准备使用ElasticSearch,之前只是对ElasticSearch有过简单的了解没有系统的学习,本系列文章将从基础的学习再到深入的使用. 咔咔之前写了一份死磕MySQL文章,如今再入一个系 ...

  9. 7月2日 Django 生成验证码、

    html页面里 {# 验证码 #} <div class="form-group " id="v-code-wrapper"> <label ...

  10. docker专题 从入门到放弃

    1.docker是什么 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚 ...