GCC 编译命令和基本使用
gcc编译一个c文件的过程,会经过几个步骤:预编译,编译,汇编,链接。
编译命令
-E:预编译, 讲带#的语句重新展开到制定文件中
比如#define, #include "*.h"
gcc -E main.c -o main.i
-S:编译,将.o文件编译成编译成汇编文件(.s文件)
gcc -S main.c -o mian.s
-c:汇编,相比-S命令,多了assemble,生成目标文件(.o文件)
gcc -c main.c -o mian.o
最常用的命令,将.c文件直接编译成可执行文件或.o文件。
gcc main.c -o main
备注:
-std:使用哪个c语言标准编译
// 使用c99编译
gcc -std=c99
// 使用gnu99(c99的gnu扩展)编译
gcc -std=gnu99
编译静态库
gcc -c hello.c -o hello.o// 静态库名称规则: lib+名字+.a(), 否则在使用-l链接的时候会找不到ar -r libhello.a hello.o hello2.o gcc main.c libhello.a -o main// 或者:gcc -L ./ main.c -lhello -o main (-L制定库的搜索路径,-l调用链接库)
说明:.a表示archive归档。ar类似于tar,起打包的作用。
编译动态库
gcc -c -fpic hello.c (fpic:采用浮动地址)gcc -shared hello.o -o hello.so (.so告诉编译器编译成动态库,省略的话会编译成exe)合并:gcc -fpic -shared hello.c -o hello.so
GCC 编译选项
选 项 |
含 义 |
ansi |
支持符合ANSI标准的C程序 |
pedantic |
允许发出ANSI C标准所列的全部警告信息 |
pedantic-error |
允许发出ANSI C标准所列的全部错误信息 |
w |
关闭所有告警 |
Wall |
允许发出Gcc提供的所有有用的报警信息 |
werror |
把所有的告警信息转化为错误信息,并在告警发生时终止编译过程 |
GCC 编译命令和基本使用相关推荐
- gcc编译命令的常用选项——强烈推荐大家使用 -Wall 选项
C程序编编译的过程分为如下四个阶段 1.预处理:头文件展开(#include).宏替换(#define).条件编译(#ifdef)(.i)使用预处理器(预处理阶段处理的都是以#开头的代码) 2.编译: ...
- Linux gcc编译命令
编写一个C程序 1.用文本文件编写代码 用 touch 命令:"touch 文件名" 可以创建一个文件(比如 touch hello.c),如下图: 在命令行输入 touch he ...
- gcc 编译命令选项$@ $^ $
一些常见的自动化变量说明如下: (1) $@ --目标文件的名称: (2) $^ --所有的依赖文件,以空格分开,不包含重复的依赖文件: (3) $< --第一个依赖文件的名称. (4) $? ...
- gcc 编译C语言最全命令
gcc 编译命令 最简单的编译命令是: gcc main.c 默认生成的可执行文件是 a.out 如果需要指定输出文件,则需要使用如下的命令: gcc main.c – o main ...
- C语言:gcc编译过程及make命令、makefile语法规则
gcc编译过程 编译过程: make && makefile make概述 makefile语法规则 make命令格式 Makefile案例 之所以写成多个文件,是出于模拟多模块编程的 ...
- Linux | 编译原理、gcc的命令参数、自动化构建工具 make/Makefile
文章目录 编译原理 预处理 编译 汇编 链接 gcc的常用命令参数 make 和 Makefile 的概念 make的运行 通配符 自动化变量 伪目标.PHONE:[命令] 编译原理 在解释 make ...
- linux gcc g++编译命令选项
gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码) ...
- [转]gcc下程序调用静态库编译命令:主文件必须在静态库前面!
很容易犯的错误,转载以备注! 转载请注明文章地址,尊重作者赖半仙的劳动成果,谢谢支持: http://hi.baidu.com/mgqw/blog/item/0969c4230a2508559922e ...
- gcc编译工具常用命令以及汇编语言
文章目录 一.Linux GCC常用命令 二.GCC编译器背后的故事 总结 一.Linux GCC常用命令 1 新建一个文件test,代码如下: #include <stdio.h>int ...
最新文章
- 从qspi启动linux时间,Zynq-Linux移植学习笔记(二十三)——QSPI速度配置
- 每年颁发两个图灵奖?
- finished with exit code -1073740791 (0xC0000409)解决方案
- 打算写的文章,先写个标题
- asp ed什么意思 j_这部洗脑ED动画是如何创作出来的?
- Apache-Shiro-权限缓存
- 微软小娜 服务器连不上网,Win10 64位联网状态下微软小娜无法连接网络
- mysql两台服务器怎么做数据同步_两台mysql服务器实现双机互备配置并测试数据同步...
- js学习总结----柯里化函数
- 记录一次解决404问题
- 2019 年一千多万条数据遭泄露!
- 简单python脚本实例-30个Python 小例子,帮你快速上手Python
- 分享一个免杀的netcat.exe
- 在 Flink 算子中使用多线程如何保证不丢数据?
- .net 6简单使用NPOI 读取 Excel 案例+流程
- mbedtls学习3.mbedtls_API分析
- Windows NT 下载
- json格式转csv格式
- 小程序实现单词查询搜索及搜索的历史记录
- Git删除提交历史记录
热门文章
- dell7080MFF黑苹果抄作业
- oppor15更新android,OPPOR15 Android P体验 刘海屏体验新方式
- 软件实习项目二:贪吃蛇的游戏开发
- python json.loads u_Python:json.loads返回前缀为’u’
- Spring中进行事务管理的两种方式
- jquery 点击事件 第一次点击选中 第二次点击改变状态
- 浪潮信息与宁盾共促身份管理系统升级 联合解决方案通过澎湃技术认证
- sqlConnection连接不上sql 2000 原来是因为没有打补丁sp4
- form表单提交以及用Jquery实现ajax提交form表单
- 北航计算机组成原理课程设计-2020秋 PreProject-数制