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 *.i 或 gcc -S -o *.s *.c
输入:*.i 或 *.c
输出:*.s
编译错误
语法错误
汇编
命令:as -o *.o *.s
输入:*.s
输出:*.o
命令:gcc -c *.o *.s 或 gcc -c *.o *.c
输入:*.s 或 *.c
输出:*.o
链接
命令:collect2 -o 可执行文件 *1.o … *n.o
输入:*1.o … *n.o
输出:可执行文件
命令:gcc -o 可执行文件 *1.o … *n.o 或 gcc -o 可执行文件 *.s 或 gcc -o 可执行文件 *.c
输入:*1.o … *n.o 或 *.s 或 *.c
输出:可执行文件
链接错误
undefined 或 multiple definition