如何编译多文件的源代码?
现在有一程序,由5个文件构成(.c和.h)。代码肯定是正确的,在os400上跑着。现在我做了些修改,准备先在redhat9下测试。我已完全安装gcc。
问题一,以下头文件在redhat9中都有吗?
#include <fcntl.h>
#include <sys/times.h>
#include <unistd.h>
#include <sys/time.h>
#include <time.h>
#include <signal.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <strings.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/select.h>
问题二,习惯了windows下VC集成编译环境,不知在linux下如何将多个文件编译成执行文件。
问题点数:100、回复次数:10Top
1 楼tianxiangyuan(潇湘夜雨)回复于 2004-08-03 15:29:36 得分 5
1、有
2、学习写makefile吧Top
2 楼raylei()回复于 2004-08-03 15:30:20 得分 50
问题一 都有
问题二 写makefile
CC = gcc
CFLAGS =
INCDIR = -I./h ../h
LIBS =
BINNAME = test
COBJS = a1.o a2.o ./dir1/a3.o
.SUFFIXES: .o .c
.c.o: ; $(CC) $(CFLAGS) -c $*.c
#--------------------- Dependency starts here -------------------
all: $(COBJS)
$(CC) $(LIBS) -o $(BINNAME) $(COBJS)
clean: /tmp
-rm -fr $(COBJS)
-rm -fr $(BINNAME)
# DO NOT DELETETop
3 楼xhenry()回复于 2004-08-03 16:15:53 得分 0
楼上的makefile写的太乱了,给个清晰,短小的例子,哪怕只包含两个源文件。
makefile文件写完后怎么用?
另外,redhat下有没有类似VC的集成环境,只要把源文件加进入,就能编译。
Top
4 楼blankman(菜鸟)回复于 2004-08-03 16:26:47 得分 10
a.c b.c
gcc -o exefile a.c b.cTop
5 楼toxyboy(不专业,我就顶,绝不误导别人!!)回复于 2004-08-03 17:00:46 得分 10
makefile 写完后用make命令就可以了。
依照楼主的意思makefile可以这样写:
[tab]gcc -o exefile a.c b.c
redha下好像没有那么vc这样的IDE,呵呵。Top
6 楼lvgame(boy02)回复于 2004-08-03 17:27:29 得分 10
makefile的语法不是很复杂的,记得前一阵这里有人贴了个写makefile的,不错,找找应该还在的。
有可以直接给你生成makefile的东西,好像叫makeconf吧,记不太清,可以为你直接写好makefile,不过好像效率不高。其实自己写并不复杂,用我们老师的话,你连几百个文件的代码都写了,还在乎写个makefile吗:)Top
7 楼Brierbird(荆棘鸟)回复于 2004-08-03 17:39:10 得分 10
关于makefile,看《跟我一起写makefile》:
http://www.vczx.com/forum/attachment.php?s=f5bf01c9b3f2f1945117e415720bc353&postid=3391Top
8 楼yjf7888(seeking a place 找工作了location:Chengdu)回复于 2004-08-03 17:58:31 得分 5
makefile,拷个模板照着套就行了Top
9 楼xhenry()回复于 2004-08-04 10:24:32 得分 0
真奇怪,文件a.c包含头文件a.h,a.h中定义了一些符号常量和函数,然后a.c中使用了这些常量和函数。
然后我开始编译,在cygwin环境中cc a.c -c a.o 没有问题。但在red hat9中用同样的指令编译时,提示变量、函数未定义,为什么?Top
10 楼racky6362()回复于 2004-08-07 12:38:16 得分 0
用shell也一样可以的
#!/bin/sh
out=file name
........//gcc ..
........ //gcc ..Top




