Linux GCC常用命令

这篇具有很好参考价值的文章主要介绍了Linux GCC常用命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、示例一

1.简单编译

1.1预处理

1.2编译为汇编代码

1.3汇编

1.4连接

 2.多个程序文件的编译

3检错

4库文件连接

 二、示例二

1.准备hello.c

 2.预处理

3.编译

4.汇编

5.链接

6.分析ELF文件

6.1ELF文件的段

6.2反汇编ELF


一、示例一

1.简单编译

创建文件mkdir test4

cd  test4

gedit test.c

test.c内容如下:

Linux GCC常用命令

Linux GCC常用命令

 文章来源地址https://www.toymoban.com/news/detail-496686.html

 这个程序一步到位的·指令是gcc test.c -o test。这一过程是分为四个阶段进行的,即预处理(也称预编译)、编译、汇编和连接。

1.1预处理

gcc -E test.c -o test.i 或者gcc -E test.c

Linux GCC常用命令

gcc 的-E选项 可以让编译器在预处理后停止,并输出与处理结果。在本例中,预处理结果就是将stdio.h文件中的内容插入到test.c中

1.2编译为汇编代码

gcc -S test.i -o test.s

Linux GCC常用命令

gcc的-S选项表示程序编译期间,在生成汇编代码之后停止,-o输出汇编代码文件。

1.3汇编

gcc -c test.s -o test.o

Linux GCC常用命令

对于上一小节生成的汇编代码文件test.s,gas汇编器负责将其编译为目标文件

1.4连接

gcc test.o -o test

Linux GCC常用命令

 

对于上一小节中生成的test.o,将其与C标准输入输出库进行连接,最终生成程序test,然后执行

 2.多个程序文件的编译

该处内容有在上上一篇博客中编写,有需要可前往。

3检错

gcc -pedantic test.c -o test

-pedantic选项能够帮助程序员发现一些不符合ANSI/ISO C标准的代码,但不是全部,事实上只有ANSI/ISO C语言标准中要求进行编译器诊断的情况才有可能被GCC发现并警告。

gcc -Wall test.c -o test

-Wall能够使GCC产生更多的警告信息

gcc -Werror test.c -o test

-Werror选项会使GCC在所有产生警告的地方停止编译,迫使程序员对代码进行修改。

4库文件连接

函数库实际上就是一些头文件(.h)和库文件(so、lib、dll)的集合,Linux下的大多数函数都默认头文件放到/usr/include目录下,而库文件则放到/usr/lib目录下,但有时候需要用到的库不在这些目录下,所以GCC在编译时必须用自己的办法来查找所需的头文件和库文件。

test.c是在Linux上使用c连接mysql,需要去官网下载MySQL Connectors的C库,里面有一个include文件夹,包含mysql connectors的头文件,还有一个lib文件夹,里面包含二进制so文件libmysqlclient.so

include文件夹路径为/usr/dev/mysql/include.lib    

lib文件夹是/usr/dev/mysql/lib

编译成可执行文件

gcc -c -I /usr/dev/mysql/include test.c -o test.o

Linux GCC常用命令

链接

把所有目标文件链接成可执行文件

gcc -L /usr/dev/mysql/lib -lmysqlclient test.o -o test

Linux GCC常用命令 

强制链接时使用静态库

默认情况下,GCC在链接时会优先使用动态库。为了让GCC在链接时只用到静态库可使用以下命令

gcc -L /usr/dev/mysql/lib  -static -lmysqlclient test.o -o test

Linux GCC常用命令

 二、示例二

1.准备hello.c

Linux GCC常用命令

 2.预处理

gcc -E hello.c -o hello.i

Linux GCC常用命令

3.编译

gcc -S hello.i -o hello.s

 Linux GCC常用命令

4.汇编

gcc -c hello.s -o hello.o或者as -c hello.s -o hello.o

 Linux GCC常用命令

5.链接

若使用命令gcc hello.c -o hello则会使用动态库进行链接,生成的ELF可执行文件大小和链接的动态库如下所示

Linux GCC常用命令

 若使用命令gcc -static hello.c -o hello则会使用静态库进行链接,生成的ELF可执行文件大小和链接的动态库如下所示

Linux GCC常用命令

6.分析ELF文件

6.1ELF文件的段

readelf -S hello

Linux GCC常用命令

6.2反汇编ELF

objdump -D hello

Linux GCC常用命令

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

gcc -o hello -g hello.c

objdump -S hello

Linux GCC常用命令

 

Linux GCC常用命令

 

 

 

 

 

 

 

 

到了这里,关于Linux GCC常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux常用命令——gcc命令

    基于C/C++的编译器 gcc命令 使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需

    2024年02月09日
    浏览(43)
  • Linux GCC常用命令

    目录 一、示例一 1.简单编译 1.1预处理 1.2编译为汇编代码 1.3汇编 1.4连接  2.多个程序文件的编译 3检错 4库文件连接  二、示例二 1.准备hello.c  2.预处理 3.编译 4.汇编 5.链接 6.分析ELF文件 6.1ELF文件的段 6.2反汇编ELF 创建文件mkdir test4 cd  test4 gedit test.c test.c内容如下:    这个

    2024年02月10日
    浏览(44)
  • arm-linux-gnueabihf-g++ gcc编译、优化命令 汇总

    gcc优化选项,可在 编译时间,目标文件长度,执行效率 三个维度,进行不同的取舍和平衡。 -c 只编译并生成目标文件。 -E 只运行 C 预编译器。 -g 生成调试信息。GNU 调试器可利用该信息。 -Os 相对语-O2.5。 -o FILE 生成指定的输出文件。用在生成可执行文件时。 -O0 不进行优化

    2024年02月12日
    浏览(44)
  • 【Linux】gcc编译过程、make和makefile的概念与区别、Linux简单进度条实现

      1. 预处理(进行宏替换)   2. 编译(生成汇编)   3. 汇编(生成机器可识别代码)   4. 连接(生成可执行文件或库文件)   预处理(Preprocessing):在这个阶段,gcc会对源代码进行预处理,主要包括处理宏定义、头文件包含、条件编译等操作。预处理器会根据预处

    2024年02月12日
    浏览(37)
  • 【探索Linux】—— 强大的命令行工具 P.4(编译器 gcc/g++ 使用)

    前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也了解并学习了有关Linux开发工具vim ,也相信大家都掌握的不错,今天博主带大家了解一下Linux编译器 gcc/g++ 使用, 下面话不多说坐稳扶好咱们要开车了!!

    2024年02月12日
    浏览(53)
  • 编译正点原子kernel报错make: arm-linux-gnueabihf-gcc:命令未找到

    需要在 Makefile 添加完整路径内容: 解决办法:

    2024年02月02日
    浏览(42)
  • Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)

            在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.         但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这

    2024年02月05日
    浏览(81)
  • Linux常用命令详细示例演示

    Linux 下命令格式: command [-options] [parameter] 命令 [选项] [参数] command 是命令 例如:ls cd copy [-options] 带方括号的都是可选的 一些选项 例如:ls -l 中的 -l [parameter] 可选参数,可以是 0 或多个 例如:rm -f file1 file2 file3 删除文件 file1、file2、file3 注意: 命令 与 选项 参数之间都是需

    2023年04月11日
    浏览(37)
  • Linux——认识Linux的目录结构 & 常用命令 & vim命令 & 权限及其控制

    一切皆文件 文件分类 【安装】Linux环境下的 JDK的安装 安装配置 环境变量 1.进程kill -9 运行窗口退出 2.ctrl c退出 ls -a 查看所有文件(包含隐藏) ​ ls -la 查看所有文件详细信息 查看当前文件夹下的文件 在 Linux 系统中,ls 和 ll 命令都是用来列出目录内容的命令,它们的区别

    2024年02月16日
    浏览(56)
  • Linux常用命令50个含示例

    下面是50个常用的Linux命令,以及它们的使用示例和常用参数: ls:列出目录下的文件和子目录。 示例:ls /home/user/ 常用参数:-l 显示详细信息,-a 显示所有文件(包括隐藏文件),-h 人性化显示文件大小。 cd:切换当前工作目录。 示例:cd /home/user/ 常用参数:无。 pwd:显示

    2024年02月02日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包