初探Makefile

来源:互联网 发布:手机淘宝1元秒杀入口 编辑:程序博客网 时间:2024/05/29 04:30

    由于近期实验室工作的原因,需要到Linux环境下生成一个C++项目的动态库文件,开始第一次采用写Makefile的方式来生成。在Linux平台下面,C/C++项目的源码文件首先会通过编译生成.o文件,它也被称为OBJ目标文件,在这一步中,编译主要完成的任务是对源代码中的语法和逻辑进行检查,若通过则将生成.o文件,下一步是链接过程,该过程将会产生中间文件,也就是我们说的动态链接库文件.so或者静态库文件.a,在windows下对应的则是.dll和.lib文件,该步骤将.o文件对应的.h找出来,并将这些.o文件链接成为.so或者.a文件。如果用命令行来一步步生成的话,对于大项目而言,这样的方法是不科学的,首先是每次都要检查文件的依赖关系,其次是每次手打的话,效率会很低,Makefile就是为了解决这样大项目的生成而存在的。

    以下是近期实验室项目,需要用到的Makefile,第一次接触,特此记录。

    

    一个C++工程下,各文件的依赖形式如上图所示,假定最后要生成的.so文件名为foreground_extraction.so,那么相应的Makefile如下:

<pre name="code" class="plain">foreground_extraction.so : main.o utility.o
</pre><pre name="code" class="plain">
        gcc -fPIC -shared -o foreground_extraction.so main.o utility.o
main.o : main.cpp data_structure.h jni_call.h utility.h
        gcc -fPIC -c -I /usr/lib/gcc/x86_64-redhat-linux/4.4.4/include main.cpp
utility.o : utility.cpp utility.h
        gcc -fPIC -c utility.cpp
.PHONY : clean 
clean:
        rm foreground_extraction.so main.o utility.o


0 0
原创粉丝点击