linux制作单文件程序,Linux —— GCC命令及C语言编程(单文件)

1、GCC概述

C头文件: 用C语言进行程序设计时,咱们要用到头文件来提供对常量的定义和对系统及库函数调用的声明。 头文件几乎老是在 /usr/include 目录及其子目录下。web

C函数库: 库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。 标准系统库文件通常存储在 /lib 和 /usr/lib 目录中。vim

一个C/C++程序从开始编码到生成二进制可执行文件至少要通过4个步骤svg

预处理(Preprocessing):对源文件的宏进行展开

编译(Compilation;):将源程序编译成汇编文件

汇编(Assembly):将汇编文件编译成机器码

连接(Linking ):将目标文件和外部符号进行连接,生成可执行文件

2、GCC命令

做用: 使用 gcc 编译器对指定文件进行处理函数

格式: gcc [选项] [文件名]编码

经常使用选项:spa

-o file:将通过gcc处理过的结果存为文件file,这个结果文件多是预处理文件、汇编文件、目标文件或者最终的可执行文件命令行

-c:仅对源文件进行编译,不连接生成可执行文件。设计

-Idir:大写I)在编译源程序时增长一个搜索头文件的额外目录——dir,即include增长一个搜索的额外目录。code

-Ldir:(大写L)在编译源文件时增长一个搜索库文件的额外目录——dirxml

-E:指定GCC在生成预处理文件后中止

-S:指定GCC在生成汇编文件后中止

3、源文件的编写

一、在命令行输入

$ vim hello.c

二、进入hello.c后,按照如下内容编写(编辑)

#include

int main(int argc,char **argv)

{

printf("hello world\n");

}

4、由源文件生成预处理文件

一、在命令行输入

$gcc –E hello.c –o hello.i

二、hello.i 的内容

执行预处理主要完成如下3个任务

(1)把“include"的文件拷贝到要编译的源文件中

(2)用实际值替代”define“的文本

(3)在调用宏的地方进行宏替换

extern void funlockfile(FILE *__stream) __attribute__((__nothrow__));

# 844 "/usr/include/stdio.h" 3 4

# 2 "hello.c" 2

int main()

{

printf("hello world!\n");

}

5、由源文件生成汇编文件

一、在命令行输入

$gcc –S hello.c –o hello.s

二、hello.s 的内容

main:

leal 4(%esp), %ecx

andl $-16, %esp

pushl -4(%ecx)

pushl %ebp

movl %esp, %ebp

pushl %ecx

subl $4, %esp

movl $.LC0,(%esp)

call puts

addl $4, %esp

popl %ecx

popl %ebp

leal -4(%ecx), %esp

ret

6、由源文件生成对应的目标文件和可执行文件

一、生成目标文件

$ gcc -c hello.c -o hello.o

二、生成可执行文件

$ gcc hello.o -o hello

三、执行可执行文件

$ ./hello

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值