automake生成makefile和mpicc链接库

来源:互联网 发布:html json code标签 编辑:程序博客网 时间:2024/05/16 23:38

所必须的软件:autoconf/automake/m4/perl/libtool(其中libtool非必须)。

下面是项目的文件目录关系,主函数main在MPIFileClassify.c中:

终端:

cd MPIFileClassify   //项目所在目录

autoscan   //生成configure.scan文件

mv configure.scan configure.in    //重命名configure.scan文件

vi configure.in       //编辑configure.in,修改如下:

说明:AC_INIT(FILE):用来检查源代码所在的路径

         AM_INIT_AUTOMAKE(PACKAGE,VERSION):这个宏是必须的,它描述将要生成的软件包的名字及其版本号。当使用make dist命令时,它会生成一个类似PACKAGE-VERSION.tar.gz的软件发行包。

        AC_CONFIG_SRCDIR(FILE): 测试源文件,只写其中一个或按其默认

       AC_CHECK_PROG(AC_PROG_CC):默认是gcc编译器,由于后面程序是要用mpicc编译器,在这里定义宏检查

      AC_OUTPUT(Makefile):要输出Makefile,大小写似乎对后面有影响

回到终端:

aclocal   //产生aclocal.m4

autoconf  //生成configure文件。在执行./configure命令生成Makefile前,还需要一个文件Makefile.am,手动创建并编辑

vi Makefile.am  //修改内容如下:

AUTOMAKE_OPTIONS:在执行automake 时,它会检查目录下是否存在标准GNU 软件包中应具备的各种文件,例如AUTHORSChangeLogNEWS 等文件。将其设置成foreign 时,automake 会改用一般软件包的标准来检查。

CC=MPICC:指定使用mpicc编译器

CFLAGS=-L/usr/include/postgresql -lpq:编译使用到的postgresql的链接库(C语言连接postgresql的库,如果缺少)

bin_PROGRAMS:产生的可执行文件的文件名。如果要产生多个可执行文件,那么在各个名字间用空格隔开。

MPIFileClassify_SOURCES:指定产生“MPIFileClassify” 时所需要的源代码。如果用到了多个源文件,用空格符号将它们隔开。
回到终端:

automake --add-missing  //如果出现configure.in:LINENUMBER:required file '***.in'文件 not found,运行命令autoheader再automake即可,这是因为AC_CONFIG_HEADERS需要测试文件,在这里我直接把configure.in里的AC_CONFIG_HEADERS宏注释了
./configure  //生成Makefile

make //编译

如果有修改configure.in和Makefile.am文件,建议从aclocal命令重新执行一遍。

安装PostgreSQL的C语言连接库:yum install postgresql-devel.xxx

在.c文件中:#include <libpq-fe.h>

 

参考:http://blog.chinaunix.net/space.php?uid=20799298&do=blog&id=99619

         http://conkeyn.iteye.com/blog/337669

        https://www.ibm.com/developerworks/cn/linux/l-makefile/

原创粉丝点击