c的编译链接与执行

一步到位

使用gcc hello.c可以将我们的源代码翻译成a.out这个可执行文件

如果要指定可执行文件的名字,如下:

gcc hello.c -o myhello

或者gcc hello.c -o hello.out

-o指定的文件名可以有后缀也可没有

如果没有就生成out.a 这个可执行文件

我们具体的说,gcc hello.c -o myhello

上面这个指令,至少包含了四步

预处理,编译,汇编和连接

各个流程

预处理

就是处理#define,#if同时还有把#include包含的文件插入到该指令的位置

我们一般使用gcc -E hello.c -o hello.i

预处理生成的文件的后缀名一般是.i

因为#include包含的文件插入到该指令的位置,所以.i文件一般比较大

编译

编译就是词法分析语法分析等等

后缀名一般是.s

命令如下:

gcc -S hello.c -o hello.s

或者

gcc -S hello.i

gcc -S hello.c

这样生成的文件默认名是hello.s

汇编

汇编就是将汇编代码转化成机器指令(目标文件)

汇编生成的文件后缀名一般是.o

命令如下:

gcc -c hello.s -o hello.o

或者

gcc -c hello.c

上面两个命令作用一样

链接

gcc hello.o -o hello.out

额外知识

在c.cpp中定义一个

int k=10;

我想在b.cpp中引用等于10的这个k就得在b.cpp中写

extern int k;

此时打印出k,就是10

参考资料

http://www.cnblogs.com/52php/p/5681711.html
http://blog.csdn.net/surgewong/article/details/39236707

相关推荐
Se_ren_di_pity4 分钟前
C++ STL容器汇总
开发语言·c++
放逐者-保持本心,方可放逐23 分钟前
webgl(three.js 与 cesium 等实例应用)之浏览器渲染应用及内存释放的关联与应用
开发语言·javascript·webgl·顶点着色器·three.js 释放·cesium 释放·片元着色器
Fatbobman(东坡肘子)37 分钟前
WWDC 2025 开发者特辑 | 肘子的 Swift 周报 #088
开发语言·macos·ios·swiftui·ai编程·swift·wwdc
南玖yy42 分钟前
深入理解 x86 汇编中的符号扩展指令:从 CBW 到 CDQ 的全解析
开发语言·汇编·arm开发·后端·架构·策略模式
学习噢学个屁1 小时前
基于STM32汽车温度空调控制系统
c语言·stm32·单片机·嵌入式硬件·汽车
「、皓子~2 小时前
AI创作系列(2):UniApp跨端开发实战 - 海狸IM移动端完全由AI编写
开发语言·人工智能·uni-app·开源·vue·开源软件·ai编程
共享家95272 小时前
c语言(重点)
c语言·数据结构·算法
南無忘码至尊2 小时前
Unity C# 入门基础知识点整理与实战技巧
开发语言·c#
江梦寻2 小时前
软件工程教学评价
开发语言·后端·macos·架构·github·软件工程
iCxhust2 小时前
汇编字符串比较函数
c语言·开发语言·汇编·单片机·嵌入式硬件