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

相关推荐
君顾14 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
南棱笑笑生4 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
平头哥技术团队5 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌萨奇也要立志学C++5 小时前
【洛谷】kmp算法
开发语言·算法
传奇开心果编程5 小时前
【Rust入门知识点学与练】第4课:条件判断 if / else
开发语言·学习·rust
m0_380743875 小时前
给 Claude API 调用补上超时重试和错误分类
开发语言·人工智能·php
Draw Stars5 小时前
Git BASH安装教程
开发语言·git·bash
vortex55 小时前
一文讲透 Zsh 与 Bash 的区别
开发语言·bash
千谦阙听6 小时前
C++类和对象(中):默认成员函数、构造与析构、拷贝构造、运算符重载
开发语言·c++·学习
天下无敌笨笨熊9 小时前
C#Modbus串口开发心得
开发语言·c#