一组C,H文件;还有一个makefile.怎么编译呀?
makefile内容如下:
-------------------------------------------------------------------------
HFILES1 = glob.h dist.h
HFILES2 = gen.hCFILES1 = ran1.c expdev.c gammln.c gasdev.c poidev.c dist.c
CFILES2 = gen.c main.c command.cOBJECTS1 = ran1.o expdev.o gammln.o gasdev.o poidev.o dist.o
OBJECTS2 = gen.o main.o command.oLIBES = -lm
CC = xlC
CFLAGS = -+ -Ogen: $(OBJECTS1) $(OBJECTS2)
$(CC) $(CFLAGS) $(OBJECTS1) $(OBJECTS2) $(LIBES) -o gentest: $(OBJECTS1) test.o
$(CC) $(CFLAGS) $(OBJECTS1) test.o $(LIBES) -o testclean:
/bin/rm $(OBJECTS1) $(OBJECTS2)$(OBJECTS1): $(HFILES1)
$(OBJECTS2): $(HFILES1) $(HFILES2)
-------------------------------------------------------------------------
我把编译器改了,o改成了obj,-o改成了/out,LIBES = -lm 也改了,可是不行啊(当年编译没学好).虽然没有错误提示.可是什么文件都没产生.这个文件要怎么改才能用vc nmake呢?另:我新建了一个console工程,把所有文件都加进去了,build的时候有150多个错误啊.
都不知道我哪做错了.看了别人关于makefile的贴子,还是不知道怎么做,只好再发个贴问问大家了...谢谢!
makefile内容如下:
-------------------------------------------------------------------------
HFILES1 = glob.h dist.h
HFILES2 = gen.hCFILES1 = ran1.c expdev.c gammln.c gasdev.c poidev.c dist.c
CFILES2 = gen.c main.c command.cOBJECTS1 = ran1.o expdev.o gammln.o gasdev.o poidev.o dist.o
OBJECTS2 = gen.o main.o command.oLIBES = -lm
CC = xlC
CFLAGS = -+ -Ogen: $(OBJECTS1) $(OBJECTS2)
$(CC) $(CFLAGS) $(OBJECTS1) $(OBJECTS2) $(LIBES) -o gentest: $(OBJECTS1) test.o
$(CC) $(CFLAGS) $(OBJECTS1) test.o $(LIBES) -o testclean:
/bin/rm $(OBJECTS1) $(OBJECTS2)$(OBJECTS1): $(HFILES1)
$(OBJECTS2): $(HFILES1) $(HFILES2)
-------------------------------------------------------------------------
我把编译器改了,o改成了obj,-o改成了/out,LIBES = -lm 也改了,可是不行啊(当年编译没学好).虽然没有错误提示.可是什么文件都没产生.这个文件要怎么改才能用vc nmake呢?另:我新建了一个console工程,把所有文件都加进去了,build的时候有150多个错误啊.
都不知道我哪做错了.看了别人关于makefile的贴子,还是不知道怎么做,只好再发个贴问问大家了...谢谢!
解决方案 »
- ADO连接出现“无效指针”
- list control控件排序后,值都变得乱七八糟的。。何解??
- 在active控件类的派生类中,如何重载事件消息那?请高手帮忙,解决后马上给分~~
- 请问在中文VC6.0环境里,工作区\工程\文件的名字是否都可以用中文?
- 有关Serialize()函数的问题,希望高手解疑?
- [IM开发讨论系列之二]Presence信息是服务器推给客户端还是客户端自己定时从服务器拉??或者您有更好的办法?
- 调用MessageBox的错误!接着调用getlasterror()函数返回的错误代码是998
- 请问怎么在CMainFrame的一个成员函数中调用一个CMyView类的成员函数?
- 串口通信中短信中心号码怎么设置或获取!!!!!!!
- <Windows Sockets 规范及应用> 这个电子书有没有 印刷版
- 应该有用winAPI编个程的吧!那就进来看看吧!关于SendMessage的!
- 关于开发数据库程序的讨论(欢迎发言)
//请看此帖子
举个例子吧,我现在有main.c 、window.c 、model.c 、data.c 4个.c文件和window.h 、model.h 、data.h 3个.h文件。
main.c是主程序,里面有main()函数。其他的都是模块。如果要生成最终的可执行文件,要做以下步骤:
1、分别编译window.c 、model.c 、data.c 、main.c ,将会得到3个目标文件:window.o 、model.o 、data.o 、main.o
2、把这4个.o (在windows下就是.obj)文件链接起来,得到main.out(在windows下就是main.exe)。那么这些文件就要有逻辑关系,否则编译器不知道怎么编译。all:main.out
main.out:main.o window.o model.o data.o
gcc -o main.out main.o window.o model.o data.o#上面的意思是说:
#all:main.out
如果想要编译所有:make all,那么将会生成main.out可执行文件。#main.out:main.o window.o model.o data.o
而要生成这个main.out,需要依赖main.o,window.o,model.o,data.o 4个文件。# gcc -o main.out main.o window.o model.o data.o
这句是调用编译器编译,vc用的是cl。变异的时候可以加上很多的参数、定义的宏、链接库路径等。当然,还没有完呢,这些main.out依赖的这些 .o 怎么来的?window.o:window.c window.h
gcc -c window.cmodel.o:model.c model.h
gcc -c model.cdata.o:data.c data.h
gcc -c data.c上面的-c参数是指定编译器编译出一个.o文件就可以了,不要再寻找main()函数做链接工作。这些和到一起,就是一个makefile,当然这些功能还太少,可以加上很多别的项目。但宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。现在的VC++真是太好了,不用一个字一个字的去敲Makefile 了。 ^_^
可以看看Think in C++
如果安装VC时注册了环境变量,应该就可以运行了。程序没有错误的话,会出现exe的。
或者将Project->Setting->Build Command Line 改为a.bat.在工程中加入a.bat用批处理编译文件。
stream.h 和 values.h是什么文件?
setw 和setprecision这两个函数是在哪些头文件里定义的呀?
我把所有的c文件改成了cpp,再把头文件和源文件里包含的一些文件改了错误就大大减少了
现在还有一个error: Cannot open include file: 'values.h': No such file or directory
"Make sure the compiler treats these as C++ and not C files -- xlC for example requires the -+ flag to treat files with .c or .h extensions as C++ files. "
建议你装个vs 的 Visual.Assist,可以狠方便的定位到宏,函数,变量等的定义处,在vckbase有下载,如果要最新的去google搜索
现在已经编译成功了.
Visual.Assist已经装了,谢谢!