前言

在Linux(Ubuntu)下, 创建C语言文件,并生成可执行文件和汇编文件,然后进行反汇编。


一、一些Linux操作

命令名称作用
cd更改当前的工作目录
pwd查看当前工作目录
mkdir新建文件夹
ls列出文件夹下包含的文件信息
rm删除文件或文件夹
exit退出管理员模式

二、编写C语言文件

  1. 打开终端:ctrl+alt+T

  2. 进入保存文件的目录。如我在桌面(desktop)建立文本, 在终端中输入 :cd Desktop

  3. 创建并进入保存C语言文件的文件夹:
    mkdir 文件名
    cd 文件名

  4. 建立文本
    gedit test.c
    //然后按下回车,会跳出一个类似于windows的记事本

  5. 写代码

#include <stdio.h> 
int main() 
{ 
printf("hello world!"); 
return 0; 
} 
  1. 点击右上角Save, 保存代码,关闭文本框。

三、生成可执行文件

1. 正常过程

  1. 启动gcc对代码进行编译。
    gcc test.c -o test
    // 生成一个test的文件,可用ls查看
    // gcc test.c -o test 修改文件的名称为 test

    或 gcc -Og test.c -o test
    -Og: 该标识会精心挑选部分与-g选项不冲突的优化选项,当然就能提供合理的优化水平,同时产生较好的可调试信息和对语言标准的遵循程度。

  2. 运行 ./test,则会开始运行

2. 可能错误

  1. Command ‘gcc’ not found, but can be installed with:
    sudo apt install gcc

按提示输入安装即可: sudo apt install gcc

  1. E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

按提示输入:apt-get update
出现 “Reading package lists… Done” 成功。

  1. 没有权限:su root 更改 然后exit 退出。

四、直接生成汇编文件

  1. gcc -Og -S test.c -o test_assembly (将生成的test.s汇编文件重命名为test_assembly)

  2. 打开文件 :cat -n test_assembly

cat -n: 显示行号,空白编号
cat -b:显示行号,空白不编号

五、反汇编

1. 由.o文件反汇编

  1. gcc -c test.c (生成test.o文件)

  2. objdump -d test.o (查看反汇编代码)

2. 由.out文件反汇编

  1. gcc -o test.c (生成test.out文件)

  2. 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语言程序

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐