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

相关推荐
迎風吹頭髮5 分钟前
UNIX下C语言编程与实践20-UNIX 文件类型判断:stat 结构 st_mode 与文件类型宏的使用实战
linux·c语言·unix
hello_lain20 分钟前
9.1 简单排序(冒泡、插入)(排序(上))
c语言·数据结构·算法·排序算法
毕设源码-朱学姐26 分钟前
【开题答辩全过程】以 python基于Hadoop的服装穿搭系统的设计与实现为例,包含答辩的问题和答案
开发语言·hadoop·python
爱砸键盘的懒洋洋39 分钟前
Python第四课:数据类型与转换
开发语言·python
saber_andlibert43 分钟前
【C++】——new和delete与malloc和free的区别
c语言·c++
维度攻城狮1 小时前
C++中的多线程编程及线程同步
开发语言·c++·性能优化·多线程·线程同步
拾光Ծ1 小时前
【C++哲学】面向对象的三大特性之 多态
开发语言·c++·面试
大飞pkz1 小时前
【设计模式】解释器模式
开发语言·设计模式·c#·解释器模式
Dyan_csdn2 小时前
Python系统设计选题-49
开发语言·python
草莓熊Lotso2 小时前
《回溯 C++98:string 核心机制拆解 —— 从拷贝策略到高效 swap》
开发语言·c++