1.C++编译过程

本文详细介绍了如何在Linux上安装C++编译环境,包括gcc的安装步骤,以及编程语言发展的概述,重点讲解了GCC的工作流程,如预处理、编译、汇编和链接等环节,并通过实例演示了gcc的不同编译选项的使用。
摘要由CSDN通过智能技术生成

1.Linux 如何安装 C++ 编译环境

(1)安装 gcc

下载:sudo apt install gcc g++ 
安装:gcc/g++ -v/--version

其中 gcc 用于编译 C ,g++ 用于编译 C++

版本要 >4.8.5 这样才能使用 C++11 的特性

(2) 使用 g++ 编译代码

首先现在对应目录下编写一个 c++ 程序,如:test.cpp,然后执行下面的命令进行编译

g++ test.cpp -o test.out

其中 -o 代表:生成可执行目标文件

test.out 是用户自定义的可执行文件名称,在 linux 下是 .out 在 windows 中是 .exe

(3)运行可执行文件

不能直接敲指令 test.out ,要在前面加 ./test.out

2.编程语言的发展

2.1 编程语言的发展

image-20211029105526970

机器语言:计算机识别的语言

汇编语言:使用简单的符号代替机器语言

2.2 GCC 工作流程

image-20220926111116620

预处理:将头文件导入,宏替换,去掉一些注释

编译:对预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后生成相应的汇编代码

汇编:对汇编代码进行处理,生成处理器能识别的指令,目标代码

链接:将这个文件中使用的相关库进行链接,形成可执行程序

2.3 gcc 编译选项代码演示

image-20211029111249299 image-20211029110233749 image-20211030103225473

分别执行上面的代码:

最常用的指令 : Esc 并且是按照顺序来的

1.-E

预处理源文件

g++ test.cpp -E -o test.i
image-20211029111708675

这是一个长长的文件,直接定位到 Hello World 部分,可以看到所有的注释,宏定义,头文件全部被替换

2.-S

生成汇编代码

g++ test.i -S -o test.s
image-20211029111913031

3.-s

生成可执行文件

g++ test.s -s -o test.o
image-20211029112057911

上图是一对乱七八糟的东西,其实这个文件不能被打开。但是可以直接执行

image-20211029112207044

4.一步式操作

g++ test.cpp
image-20211029112518629

可以看到上图直接生成了一个 .out 文件,同理如果直接跳过 -E 还有 -S 直接执行 -s 也是可以的

3.Core dump 处理

在这里插入图片描述
S1:nm 指令

nm xxx.so | grep _ZN15Lane_Preprocess12lane_adapterERKNS_6BevMapER12videoforwardR13videobackward

通过该指令得到地址:
在这里插入图片描述
根据代码地址加上偏移量得到变量地址:
在这里插入图片描述
也可以直接找到函数名:
在这里插入图片描述

S2:根据地址找到出错的函数
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值