歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux基礎知識

Linux下automake軟件編譯與發布快速入門

本例假設要產生一個simserver1的軟件包,源文件只有1個,simserver1.cpp.使用了pthread庫。

    1.運行autoscan掃描源碼目錄

    執行

    $autoscan

    執行後生成configure.scan.

    2.編輯configure.in文件

    步驟1執行後生成了configure.scan,本步驟需要復制一份該文件並命名為configure.in,然後編輯該文件。

    命令如下:

    $cp configure.scan configure.in

    $vim configure.in

    用vim編輯器打開後,文件原內容如下:

    configure.scan開始

    # -*- Autoconf -*-

    # Process this file with autoconf to produce a configure script.

    AC_PREREQ(2.61)

    AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)

    AC_CONFIG_SRCDIR([simserver1.cpp])

    AC_CONFIG_HEADER([config.h])

    # Checks for programs.

    AC_PROG_CXX

    # Checks for librarIEs.

    # FIXME: Replace `main' with a function in `-lpthread':

    AC_CHECK_LIB([pthread], [main])

    # Checks for header files.

    AC_CHECK_HEADERS([arpa/inet.h netinet/in.h sys/socket.h])

    # Checks for typedefs, structures, and compiler characteristics.

    # Checks for library functions.

    AC_HEADER_STDC

    AC_CHECK_FUNCS([bzero inet_ntoa socket])

    AC_CONFIG_FILES([Makefile])

    AC_OUTPUT

    configure.scan結束

    編輯修改成如下內容:

    configure.in開始

    # -*- Autoconf -*-

    # Process this file with autoconf to produce a configure script.

    AC_INIT(simserver1.cpp) #這個宏用來檢查源代碼所在的路徑,放在文件開頭

    AM_INIT_AUTOMAKE(simserver1,1.0)   #描述軟件包名稱及版本號

    # Checks for programs.

    AC_PROG_CXX #使用C++

    # Checks for librarIEs.

    # Checks for header files.

    AC_CHECK_HEADERS([arpa/inet.h netinet/in.h sys/socket.h])

    # Checks for typedefs, structures, and compiler characteristics.

    # Checks for library functions.

    AC_HEADER_STDC

    AC_CHECK_FUNCS([bzero inet_ntoa socket])

    AC_OUTPUT(Makefile) #這個宏是我們要輸出的Makefile的名字

    configure.in結束

3.運行aclocal生成aclocal.m4文件

    configure.in文件編輯保存完後,用aclocal命令生成aclocal.m4文件。

    執行以下命令:

    $aclocal

    然後用ls列出生成的文件。如果沒有找到aclocal.m4文件,那一般是configure.in文件不對,修改後再重試。

    4.運行autoconf生成configure文件

    用autoconf命令來生成configure可執行文件。

    執行以下命令:

    $autoconf

    然後用ls檢查configure是否已經成功生成。

    5.建立Makefile.am文件

    Makefile.am是用來生成Makefile.in的,需要你手工書寫。Makefile.am中定義了一些內容:

    AUTOMAKE_OPTIONS

    這個是automake的選項。在執行automake時,它會檢查目錄下是否存在標准GNU軟件包中應具備的各種文件,例如AUTHORS、ChangeLog、NEWS等文件。我們將其設置成foreign時,automake會改用一般軟件包的標准來檢查。

    bin_PROGRAMS

    這個是指定我們所要產生的可執行文件的文件名。如果你要產生多個可執行文件,那麼在各個名字間用空格隔開。

    helloworld_SOURCES

    這個是指定產生“helloworld”時所需要的源代碼。如果它用到了多個源文件,那麼請使用空格符號將它們隔開。比如需要 helloworld.h,helloworld.c那麼請寫成helloworld_SOURCES= helloworld.h helloworld.c.

    如果你在bin_PROGRAMS定義了多個可執行文件,則對應每個可執行文件都要定義相對的filename_SOURCES.

    LIBS

    這個用來指定鏈接的程序庫。如LIBS += -lpthread,指定鏈接pthread庫。

    執行命令:

    $vim Makefilemam

    進入編輯界面,輸入內容如下:

    AUTOMAKE_OPTIONS=foreign

    bin_PROGRAMS=simserver1 #軟件包名稱

    simserver1_SOURCES=simserver1.cpp  #源文件列表,如果有多個則用空格分開

    LIBS += -lpthread #鏈接pthread庫

    6.運行automake

    執行automake ——add-missing來產生Makefile.in.

    $automake ——add-missing

    執行後應該生成Makefile.in文件。

    7.運行configure生成Makefile

    執行:

    $./configure

    8.執行make生成可執行文件

    $make

    執行後應該編譯輸出simserver1可執行文件。

    make還有以下幾個命令:

    make install可以將simserver1安裝到/usr/local/bin目錄下;

    make clean可清除上次編譯結果

    make dist可將代碼打包成packagename-ver.tar.gz文件

    make distcheck用來檢查打包的軟件包是否正常。

Copyright © Linux教程網 All Rights Reserved