写makefile的总结
来源:互联网 发布:mac air教程视频 编辑:程序博客网 时间:2024/04/28 06:37
在用实验室的服务器进行C++编译的时候,由于没有图形界面,只能在shell中进行操作,因此需要学习用gcc(g++)进行编译,如果命令多的话,就要用到makefile来完成批量的shell命令。
《跟我一起写Makefile》这个材料是自学写makefile的优秀材料。有任何问题都可以参照。
头文件不需要编译:在看《linux程序设计》的时候,已经知道了如何编译目标文件(.o)和可执行文件,那时候的头文件只有函数的声明,没有函数实体,我就盲目的认为如果头文件中有函数的实体的话那头文件也需要先生成目标文件(这种有函数实体的头文件是不规范的,但是已有的程序就是这样),对头文件(.h)的编译(生成.o)是完全错误的,没有必要做也不能做类似的工作。
不需要显式指明每个文件的头文件加载:对于手上的代码,除了C++的标准库(在标准位置),只需要添加一个fftw3f的库就可以编译成功。这些代码有若干个头文件和两个.cpp文件,实践证明ubuntu12.04和RedHat6.4的make和gcc(g++)都可以自动找寻.h的匹配,不需要显式的指明对于每个文件的.h加载。
于是makefile可以写为:
LIBPATH=-L/usr/local/lib
LIBNAME=-lfftw3f
crs:main.ostripmapimaging.o
g++-o crs main.o stripmapimaging.o $(LIBPATH) $(LIBNAME)
#以下可省略:
main.o:*.h
g++-c main.cpp
stripmapimaging.o:*.h
g++-c stripmapimaging.cpp
省略了生成.o文件的命令,当然也省略了头文件的显式加载声明。
其中LIBPATH是libfftw3f.a库的路径,main.o和stripmapimaging.o分别是两个.cpp文件生成的目标文件。
在make中可以自动执行省略的部分。
只在shell中输入命令对于只有两个.cpp文件的此项目也是很简单的:
先输入
“g++ -c main.cpp stripmapimaging.cpp”
或
“g++ -c *.cpp”
生成.o文件,
再输入
“g++-o Prog main.o stripmapimaging.o -L/usr/local/lib -lfftw3f”
或
“g++ -o Prog *.o -L/usr/local/lib -lfftw3f”
(注意要有Prog或其他生成的可执行文件名)
同样可以编译成功。
make的时候如果makefile的文件名不是makefile,调用方式为:
make -f name
要记得有-f。
- 写makefile的总结
- 自己总结写makefile的步骤
- Makefile之写demo时的通用Makefile写法总结
- Makefile之写demo时的通用Makefile写法总结
- Makefile之写demo时的通用Makefile写法总结
- Makefile之写demo时的通用Makefile写法总结
- 关于写makefile时常用的一些函数的总结
- makefile的写法(怎么写makefile)
- 首次写的简单Makefile
- 写个简单的makefile
- 写makefile时候的思路
- 写一个简单的makefile
- 写Makefile粗心的后果
- 如何写简单的Makefile
- 如何写简单的makefile
- 写一个简单的makefile
- 写一个简单的makefile
- Makefile的语法总结
- 推荐!手把手教你使用Git
- 构建快捷开发IDE:VisualSVN+Sublime+Visual Studio 2013+QuickEasyFTPServer
- BaseExpandableListAdapter的详细说明
- Project心得
- sencha touch的tabpanel里tab比较多时,使tab子标签滚动
- 写makefile的总结
- IAP 苹果官方文档翻译 超级详解
- 严重: IOException while loading persisted sessions: java.io.EOFException
- ScheduledThreadPoolExecutor实现原理
- Solr部署如何启动
- eclipse validating 很慢
- 五分钟理解一致性哈希算法(consistent hashing)
- 第10周项目3-血型统计
- vc6.0 打开文件的时候出现Microsoft Visual C++:MSDEV.EXE 应用程序错误