所必須的軟件: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 軟件包中應具備的各種文件,例如AUTHORS 、ChangeLog 、NEWS 等文件。將其設置成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