Linux基础学习 | gcc、g++的安装和使用
安装gcc
1、apt-get命令是debain Linux发新版的APT软件包管理工具。
dabian、ubuntu、deepin等Linux系统通过以下命令:
安装gcc:Shell输入sudo apt-get install gcc
命令,然后回车确定就可以了。
安装g++:Shell输入sudo apt-get install g++
命令,回车确定。
用于我这里已经安装过,所以显示gcc 已经是最新版。
2、yum命令是在Fedora和RedHat以及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 显示函数调用栈关系
此外,还有以下几种调试
- core文件调试 ulimit -c size 设置生成文件大小(程序崩溃时生成)
- strace 跟踪打印系统调用 -p pid
- ltrace 跟踪库函数
Linux基础学习 | gcc、g++的安装和使用的更多相关文章
- Linux基础学习【规则与安装】
一.主分区.扩展分区与逻辑分区的特性: 主分区与扩展分区最多可以有4个(硬盘的限制) 扩展分区最多只能有1个 逻辑分区是由扩展分区持续切割出来的分区 能够被格式化后作为数据访问的分区为主分区和逻辑分区 ...
- linux基础学习之软件安装以及常用命令
linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...
- Linux基础学习系列目录导航
Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...
- Linux 基础学习1
目录 Linux 基础学习 用户登录 终端 交互式接口 bash 修改ssh连接慢的步骤 命令提示符 显示提示符格式 命令 别名 命令格式 获取命令的帮助信息 man bash 快捷键 tab 键 引 ...
- Linux 基础学习2
目录 Linux 基础学习2 文件目录结构 文件命名规范 文件系统结构 linux应用程序的组成 绝对路径和相对路径 目录名和基名 切换目录 切换到家目录 切换到上一次的目录 显示当前的工作目录 列出 ...
- [转]Linux下用gcc/g++生成静态库和动态库(Z)
Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10| 分类: linux | 标签:链接库 linux g++ gcc |举报|字号 订阅 ...
- linux基础学习路线&review
linux基础学习网址: https://www.runoob.com/linux/linux-tutorial.html 比较重点的是这个启动过程的介绍学习:https://www.runoob.c ...
- Linux基础学习(全)
使用的Linux发行版本为Redhat 1.Linux(RedHat)基础学习-命令行使用入门 2.Linux(RedHat)基础学习-文件寻址与管理 3.Linux(RadHat)基础学习-vim编 ...
- Linux 之 编译器 gcc/g++参数详解
2016年12月9日16:48:53 ----------------------------- 内容目录: [介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++ ...
随机推荐
- linux光盘使用、rpm软件包、yum软件仓库安装使用
转至:https://blog.51cto.com/zpeng/1532520 一.光盘文件使用 1,RHEL5(x86_64)光盘结构 Cluster //集群二进制包 C ...
- 在shell中变量的赋值有五种方法!
转至:https://blog.csdn.net/weibo1230123/article/details/82085226 在shell中变量的赋值有五种 :使用 read 命令,直接赋值,使用命令 ...
- MariaDB 与Mysql版本对应关系
特定MariaDB版本的完全兼容性 就InnoDB而言,MariaDB 10.2.MariaDB 10.3和MariaDB 10.4是MySQL 5.7的有限替代.然而,在每一个新的MariaDB版本 ...
- Django基础三之路由、视图、模板
Django基础三之路由.视图.模板 目录 Django基础三之路由.视图.模板 1. Django 请求和返回周期 1.1 路由层之路由匹配 1.2 有名分组 1.3 无名分组 2. 反射解析 3. ...
- BM 学习笔记
两个 BM 哟 1.Bostan-Mori 常系数其次线性递推. 实际上这个算法是用来计算 \([x^n]\frac {F(x)}{G(x)}\) 的... 我们考虑一个神奇的多项式:\(F(x)F( ...
- Android 12(S) 图形显示系统 - BufferQueue的工作流程(九)
题外话 Covid-19疫情的强烈反弹,小区里检测出了无症状感染者.小区封闭管理,我也不得不居家办公了.既然这么大把的时间可以光明正大的宅家里,自然要好好利用,八个字 == 努力工作,好好学习 一.前 ...
- SpringBoot中常用的45个注解
1.SpringBoot/spring @SpringBootApplication: 包含@Configuration.@EnableAutoConfiguration.@ComponentScan ...
- CentOS Stream 8 安装 Zabbix6.0 -- LNMP环境(nginx-1.20,mariadb-10.6,php-7.4)
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 zabbix6.0 LTS版本出来了,前段时间刚安装了5.4,今天打算在虚拟机上安装6.0测试,安装6.0的要求php版本不低于7.2,mariad ...
- 6月5日 python学习总结 jQuery (二)
1. 操作样式 对CSS类的操作: addClass();// 添加指定的CSS类名. removeClass();// 移除指定的CSS类名. hasClass();// 判断样式存不存在 ...
- 重定向(Redirect)和请求转发(Forward)
一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下: request.getRequestDispatcher("new.jsp").forward(reques ...