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

Linux环境下编译链接调试C/C++源程序

程序员文章站 2022-07-13 23:17:10
...

一:单文形式

    这里介绍最常用的GCC编译连接器。其中gcc基本的使用格式:

gcc[选项] <filename>[选项][目标文件]

    上面的使用格式中目标文件可以缺省,gcc会默认生成可执行的文件,生成名:编译文件.out。gcc会按照命令选项要求对输入文件进行预处理,编译,汇编,链接等操作,生成输出文件。

Linux环境下编译链接调试C/C++源程序

    参考一些gcc命令手册有:

Linux环境下编译链接调试C/C++源程序

    以千年规律:hello.c为例

#include<stdio.h>

void main(){
	printf("Hello GCC.\n");
}
头文件包含#include<>和其他的宏定义(#define #ifdef等),在程序的预处理阶段,编译器将包含的头文件stdio.h编译进来,我们可以使用“-E”来查看,作用为让gcc在预处理阶段结束后停止编译过程。

Linux环境下编译链接调试C/C++源程序

     -o 指令指定生成的预处理文件为heelo.i,其实-o hello.i 可以省略,这时候生成的预处理文件会被定向到标准输出设备上,我们可以查看下hello.i文件的内容:

Linux环境下编译链接调试C/C++源程序

    -S 选项是指定gcc 在生成汇编文件后就停止。

Linux环境下编译链接调试C/C++源程序

同样的 -o 指定生成汇编文件myhello.s,-o myhello.s 可以省略,然后gcc就默认生成一个源文件同名的sourcefilename.s,我们也可以看看myhello.s:

Linux环境下编译链接调试C/C++源程序

    -c 选项指定gcc生成目标文件后停止:

Linux环境下编译链接调试C/C++源程序

最后,如果gcc不使用-E -S -c等选项时候,仅仅使用-o,那么将直接生成可执行文件。

Linux环境下编译链接调试C/C++源程序

    执行生成的可执行文件:

Linux环境下编译链接调试C/C++源程序

二:多文件的处理

     这里写两个.c源文件:
bubblesort.h
#ifndef _BubbleSORT_H
#define _BubbleSORT_H
display();
#endif
bubblesort.c
#include<stdio.h>
void display(){
	printf("Hello GCC!\n");
}
timespans.c
#include<stdio.h>
#include<time.h>

#include "bubblesort.h"

int main(){
	display();
	return 0;
}
Linux环境下编译链接调试C/C++源程序