欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux下C语言编译过程及相关错误

程序员文章站 2022-03-03 22:31:07
...

linux下C语言编译过程及相关错误

预处理

包括:替换宏定义
命令:cpp -o *.i *.c
输入:*.c
输出:*.i

命令:gcc -E -o *.i *.c
输入:*.c
输出:*.i

预处理错误

include和define

#include "当前目录(自定义)"
#include <系统环境> 

include:not find:gcc -I 头文件目录 -o 可执行文件 *.c

预处理的使用

#include							// 包含头文件
#define							// 宏定义 (替换)
#ifdef #else #endif		// 条件编译

/* 预定于宏 */
__FUNCTION__            // 函数名
__LINE__						// 行号
__FILE__						// 文件名

#与##

#define TOSTR(x)				# x          		// 转换为字符串
#define CONNECT(x)      	num ## x    // 连接成为变量、函数、宏定义

编译添加宏定义:gcc -D 宏名 -o 可执行文件 *.c

编译

命令:cc1 -o *.s *.i
输入:*.c
输出:*.s

命令:gcc -S -o *.s *.igcc -S -o *.s *.c
输入:*.i 或 *.c
输出:*.s

编译错误

语法错误

汇编

命令:as -o *.o *.s
输入:*.s
输出:*.o

命令:gcc -c *.o *.sgcc -c *.o *.c
输入:*.s 或 *.c
输出:*.o

链接

命令:collect2 -o 可执行文件 *1.o … *n.o
输入:*1.o … *n.o
输出:可执行文件

命令:gcc -o 可执行文件 *1.o … *n.ogcc -o 可执行文件 *.sgcc -o 可执行文件 *.c
输入:*1.o … *n.o 或 *.s 或 *.c
输出:可执行文件

链接错误

undefined 或 multiple definition