automake生成makefile和mpicc鏈接庫

所必須的軟件: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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章