国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

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

2024-06-28 13:03:40
字體:
來源:轉載
供稿:網友
 

本例假設要產生一個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用來檢查打包的軟件包是否正常。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锡林浩特市| 巴林左旗| 文登市| 三江| 灵宝市| 石景山区| 宽甸| 迭部县| 通道| 红原县| 盐津县| 措美县| 揭东县| 招远市| 台山市| 建德市| 鸡泽县| 泌阳县| 涿鹿县| 略阳县| 临颍县| 苍梧县| 贵阳市| 赤壁市| 莆田市| 崇左市| 兴城市| 汤阴县| 长子县| 彰化市| 唐山市| 通渭县| 张掖市| 九台市| 安乡县| 洱源县| 长顺县| 图木舒克市| 丰镇市| 汽车| 曲阳县|