Linux GCC常用命令和ELF文件格式

Linux GCC常用命令和ELF文件格式,第1张

Linux GCC常用命令和ELF文件格式

目录
  • 一.C 语言程序 Hello.c示例
    • 1.准备工作
    • 2.预处理
  • 二.汇编
  • 三.链接
  • 四.分析elf文件
    • 1.ELF 文件的段
    • 2.反汇编 ELF
  • 五.Linux GCC 常用命令
    • gcc简介
    • 简单编译过程
      • 1.多个文件编译
      • 2.库文件连接
  • 总结
  • 参考文献

一.C 语言程序 Hello.c示例 1.准备工作

1.在合适的位置新建文件夹test3,并打开

2.新建c语言文件hello.c,使用文本编辑器Vim,输入以下代码

vi hello.c

2.预处理

1.输入命令

gcc -E hello.c -o hello.i


2.查看预处理文件。
hello.i 文件可以作为普通文本文件打开进行查看
使用命令

cat hello.i


3.输入gcc 编译的命令

gcc -S hello.i -o hello.s


4.打开hello.s文件

二.汇编

1.输入汇编命令

gcc -c hello.s -o hello.o

三.链接

1.动态库链接命令

gcc hello.c -o hello

静态库链接命令

gcc -static hello.c -o hello

2.此处我们使用静态库链接命令,使用下列代码查看静态链接库大小

size hello


3.查看链接

ldd hello

四.分析elf文件 1.ELF 文件的段

使用命令readelf -S 查看其各个 section 的信息

2.反汇编 ELF

1.使用命令 objdump -D 进行反汇编

2.使用 objdump -S 将其反汇编并且将其 C 语言源代码混合显示出来

gcc -o hello -g hello.c
objdump -S hello

五.Linux GCC 常用命令 gcc简介

GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL 语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语 言编译器的意思了,而是变成了 GNU Compiler Collection 也即是 GNU 编译器家族的意思了。另 一方面,说到 GCC 对于 *** 作系统平台及硬件平台支持,概括起来就是一句话:无所不在。

简单编译过程 1.多个文件编译

1.新建文件夹test5,并打开

2.新建c语言文件test1.c

vi test1.c


3.输入以下代码:

4.同样步骤,创建test2.c

5.编译上面的文件

6.使用ls查看,可以看到生成了test1.o和test2.o目标文件

2.库文件连接

1.新建文件夹test6,并打开
2.新建c语言文件test.c

3.编译 test.c 为目标文件,执行如下命令

gcc -c test.c 


4.链接

gcc test.o -o test


5.运行

./test

总结

通过此次实验我学习到了gcc的常用命令,c语言程序编译的四个过程,预处理,汇编,编译,链接,学会了这四个阶段gcc所执行命令的过程,。熟悉了ELF文件的基本格式内容,对程序执行过程了解更加清晰。

参考文献

Linux GCC常用命令和ELF文件格式.

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/3993406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存