gcc 编译c的多文件程序问题

gcc 编译c的多文件程序问题,第1张

不怕麻烦的话呢,可以调整#include结构来让各c文件相连。。

建议呢,把类型配纯与函数的声明整理到特定的.h文件中,然后用#ifndef来使其只被包含一次,然后,在用到其它文件中实现的函数的时候将相应的.h文顷灶件include进来就好。这样呢,编译的时候可以单个文件逐一编译:

gcc -c main.c -o main.o

gcc -c del.c -o del.o

gcc -c insert.c -o insert.o

参数-c意思是只编译不连接,-o是名命输出文件。

全部编译成.o文件无误后,再将所有的.o文件相连:

gcc main.o del.o insert.o -o prog

就可以生成prog了。

然后举个例子说明处理.h文件:

比如这个create.c。里面定义了一个struct和一个函数。那么就可以写create.h如下:

#ifndef __CREATE_H__

#define __CREATE_H__

struct student

{

long num

float score

struct student *next

}

struct student *creat(void)

#endif

然后呢,因为student这个struct在这培乎咐个.h文件里已经声明了,所以create.c里只要写#include "create.h",而在用到这个struct或者这个函数的场合,也只要这样简单一句就可以了。而.h文件开头的#ifndef可以保证同一个h文件不会被多次包含。当然,如果编译器支持的话,用#pragma once也许会比#ifndef更省事一些。

以上。

关于整个 C 语言中的主函数 main( ) 如何调用相关的头文件(*.h)、以及调用其它独立的模块(*.c)的方法,关键在于对于如何编写 makefile 文件的真正理解、以及真正掌握编写规则。

由于我已经有很多年没有编写过 C 语言源程序、以及编写 makefile 文件了,但是可以大概给你提供一个思路就是:

下面的文本文件假设以 my_makefile 为例,编译环境为 Linux 系统,C 语言编译器为 gcc。

但是在这里注意一点:我的 my_makefile 文件中的注释语句是否是分号进行注释,我已经不太记得了,这个需要自己再参考一下。

另外就是:对源文件(*.c)、以及生成可执行文件(my_runfile)在 my_makefile 文件中的前后手举空次序,我也记不清了,仅供参考。

myprog1.o: myprog1.c myprog1.o 的生成依赖答梁于 myprog1.c 这个源程序

gcc -c myprog1.c 使用 Linux 系统的 C 语言编译器对 myprog1.c 只编译、不链接

myprog2.o: myprog2.c myprog2.o 的生成依赖于 myprog2.c 这个源程序

gcc -c myprog2.c 使用 Linux 系统的 C 语言编译器对 myprog2.c 只编译、不链接

my_runfile: myprog1.o myprog2.o 可执行文件 my_runfile 的生成依赖于 myprog1.o、myprog2.o 这两个目标文件

gcc -o my_runfile myprog1.o myprog2.o 使用 cc 的 -o 选项生成毕瞎用户自定义的可执行文件:my_runfile,如果不指定 -o 选项,cc 编译器生成的缺省可执行文件名为:a.out

运行命令为:

$make -f my_makefile (使用 -f 选项代替缺省的 make 文件名 makefile)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8194768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存