Linux(Ubuntu)下,生成C语言可执行文件和汇编文件
前言
在Linux(Ubuntu)下, 创建C语言文件,并生成可执行文件和汇编文件,然后进行反汇编。
一、一些Linux操作
命令名称 | 作用 |
---|---|
cd | 更改当前的工作目录 |
pwd | 查看当前工作目录 |
mkdir | 新建文件夹 |
ls | 列出文件夹下包含的文件信息 |
rm | 删除文件或文件夹 |
exit | 退出管理员模式 |
二、编写C语言文件
-
打开终端:ctrl+alt+T
-
进入保存文件的目录。如我在桌面(desktop)建立文本, 在终端中输入 :cd Desktop
-
创建并进入保存C语言文件的文件夹:
mkdir 文件名
cd 文件名 -
建立文本
gedit test.c
//然后按下回车,会跳出一个类似于windows的记事本 -
写代码
#include <stdio.h>
int main()
{
printf("hello world!");
return 0;
}
- 点击右上角Save, 保存代码,关闭文本框。
三、生成可执行文件
1. 正常过程
-
启动gcc对代码进行编译。
gcc test.c -o test
// 生成一个test的文件,可用ls查看
// gcc test.c -o test 修改文件的名称为 test或 gcc -Og test.c -o test
-Og: 该标识会精心挑选部分与-g选项不冲突的优化选项,当然就能提供合理的优化水平,同时产生较好的可调试信息和对语言标准的遵循程度。 -
运行 ./test,则会开始运行
2. 可能错误
- Command ‘gcc’ not found, but can be installed with:
sudo apt install gcc
按提示输入安装即可: sudo apt install gcc
- E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
按提示输入:apt-get update
出现 “Reading package lists… Done” 成功。
- 没有权限:su root 更改 然后exit 退出。
四、直接生成汇编文件
-
gcc -Og -S test.c -o test_assembly (将生成的test.s汇编文件重命名为test_assembly)
-
打开文件 :cat -n test_assembly
cat -n: 显示行号,空白编号
cat -b:显示行号,空白不编号
五、反汇编
1. 由.o文件反汇编
-
gcc -c test.c (生成test.o文件)
-
objdump -d test.o (查看反汇编代码)
2. 由.out文件反汇编
-
gcc -o test.c (生成test.out文件)
-
objdump -d test.out (查看反汇编代码)
注:
也可用 gcc -Og -c test.c及gcc -Og -o test.c
-Og 对反汇编后的代码有些影响
参考博客:
1. gcc -O1 -O2 -O3 -Os -Ofast -Og的作用
2. linux关于文件打开的命令
3. 如何用linux系统编写c程序
4. 在Linux(Ubuntu版)下编写运行C语言程序