问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在linux中,怎么用gcc编译文件?

发布网友 发布时间:2022-04-23 17:00

我来回答

1个回答

热心网友 时间:2022-04-09 03:10

在终端中输入 gcc 文件名 -o 目标文件名
然后 ./目标文件名 就行了,没有目标文件名,自动存为 a
执行 ./a 就行了。

在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。
  GCC最基本的用法是∶gcc [options] [filenames]
  其中options就是编译器所需要的参数,filenames给出相关的文件名称。
  -c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
  -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
  -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
  -O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
  -O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
  -Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶
  A)#include <myinc.h>
  B)#include “myinc.h”
  其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在目标文件的文件夹内搜索相应文件。

GCC执行过程示例

  示例代码 a.c:
  #include <stdio.h>
  int main()
  {
  printf("hello\n");
  }
  预编译过程:
  这个过程处理宏定义和include,并做语法检查。
  可以看到预编译后,代码从5行扩展到了910行。
  gcc -E a.c -o a.i
  cat a.c | wc -l
  5
  cat a.i | wc -l
  910
  编译过程:
  这个阶段,生成汇编代码。
  gcc -S a.i -o a.s
  cat a.s | wc -l
  59
  汇编过程:
  这个阶段,生成目标代码。
  此过程生成ELF格式的目标代码。
  gcc -c a.s -o a.o
  file a.o
  a.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped
  链接过程:
  链接过程。生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存。
  gcc a.o -o a
  程序运行:
  ./a
  hello
编辑本段
GCC编译简单例子

  编写如下代码:
  #include <stdio.h>
  int main()
  {
  printf("hello,world!\n");
  }
  执行情况如下:
  gcc -E hello.c -o hello.i
  gcc -S hello.i -o hello.s
  gcc -c hello.s -o hello.o
  gcc hello.c -o hello
  ./hello
  hello,world!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何在win10下安装docker? windows(win10)上的docker使用:安装(国内镜像)、操作 win10安装dockerWin10下Docker安装和使用 关于安装配置docker,找不到Hyper-V(win10 家庭版需要配置,专业版不需要... 怎么把微信上的聊天记录转到新手机 怎么把聊天记录转到另一个手机 快递被别人冒领,快递公司有没有责任 洋葱汤洋葱汤 一颗洋葱汤怎么做 一颗洋葱汤怎么做好吃 村镇银行可以有理财产品吗 3个亿投资村镇银行,回本需要多久? linux中源码编译需要哪些软件 兴福村镇银行是正规银行吗 我把照片备份在云端然后把相册里的照片删掉了但是现在我想恢复我该怎么弄? 境外金融机构投资入股村镇银行应符合什么条件? 村镇银行将来的发展方向和前景 发起成立村镇银行需要哪些条件? 亲 我淘宝号被差评了 我都不知道怎么被差评的 也不知怎么查哪个商家评的? 嵌入式linux应用程序通常用什么编译器编译 境内金融机构投资入股村镇银行应符合什么条件? 村镇银行能否投资 请问华为手机云端的图片被删除了还能恢复吗? 怎么能知道哪个商家标记的我? 华为手机云端照片删除了怎么恢复? 境内自然人投资入股村镇银行应符合什么条件? 村镇银行的发展前景 村镇银行存款放心吗? 云相册里的照片删除了,怎么恢复 投资理财,选择全国性银行、城商行还是村镇银行?是否有区别? 什么是村镇银行? 如何更改网站上的图片 网页制作中,如何替换现有图片及文字。操作需具体 网页制作中的图片大小如何修改,分全拿出来了 网页前面的图标怎么改? 网页设计中如何更改图片的路径 网页设计怎么编辑本地图片 网页制作中怎么做出点击按钮更换图片的效果 在设计网页的过程中,想把一张图片放为那个网页的背景,该怎样做? 网页设计中的图片应该怎么优化 网页设计logo怎么改不了?把原来那个图片删除了,,,logo还不变 急急急,求大神,网页制作插入图片如何改变位置? 犹大和犹太人有什么关系? 犹太人当年经历过什么样的苦难? 犹大人为什么称为犹太人? 犹太人当年做了什么事情?以至于欧洲人非要把他们斩尽杀绝? 犹大人为什么称为犹太人 犹大是犹太人么 犹太人是怎样一个人? 一战后犹太人究竟做了什么造成欧洲反犹?为什么德国人那么恨犹太人?