久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

autoconf與automake的完整例程

 書劍閣2013 2015-01-26

一,、 automake 的用途

automake autoconf 可以自動生成 GNU Makefile ,,雖然我們也可以手工寫 Makefile ,但是考慮到在多硬件平臺上運行,,編譯環(huán)境差異,,依賴關系,靜態(tài)和動態(tài)庫的生成,,等一系列的問題,,對于復雜的代碼樹,用 automake 工具就成了更好的選擇,。

在下面的例程中,,將介紹樹型源碼包的 Makefile 生成,,其中包括生成庫文件和可執(zhí)行文件。

 

二,、 完整例程

1.   建立目錄樹

a)          生成目錄樹

$ mkdir lib

$ mkdir src

$ mkdir include

$ touch include/xy.h

$ touch lib/xy1.cpp

$ touch lib/xy2.cpp

$ touch src/main.cpp

b)         編輯源代碼文件

                         i.               include/xy.h 內容如下:

void xytest1();

void xytest2();

                       ii.               lib/xy1.cpp 內容如下:

#include <stdio.h>
void xytest1()

{ printf(“xytest1/n”); }

                      iii.               lib/xy2.cpp 內容如下:

#include <stdio.h>

void xytest2()

{ printf(“xytest2/n”); }

                     iv.               src/main.cpp 內容如下:

#include <xy.h>

main()

{

       xytest1();

       xytest2();

}

2.   autoconf

a)          生成默認的 configure.in

$ autoscan       此時目錄下生成 configure.scan

$ mv configure.scan configure.in

b)         編輯 configure.in (為了書寫簡單,,去掉了所有注釋)

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

AM_INIT_AUTOMAKE(xytest, 1.0)  # 此處是軟件名和版本號

AC_PROG_CXX                    # 自動檢測編譯器

AC_PROG_CC

AC_PROG_LIBTOOL                # 生成動態(tài)/ 靜態(tài)庫需要LIBTOOL

AC_OUTPUT(Makefile lib/Makefile src/Makefile)  # 此處是輸出的文件

c)         自動生成 configure

$ aclocal         它是一個 perl 腳本,根據(jù) configure.in 產生 aclocal.m4

$ libtoolize –force    它會生成 libtool 所需要的工具,,主要為生成庫做準備

$ autoconf      通過 aclocal.m4 產生 configure

3.   automake

a)          Makefile.am 項層寫法,,編輯 ./Makefile.am 如下

AUTOMAKE_OPTIONS=foreign

SUBDIRS = lib src

b)         Makefile.am 編譯庫文件的寫法,編輯 lib/Makefile.am 如下

DEFAULT_INCLUDES=-I../include

lib_LTLIBRARIES = libxy.la

libxy_la_SOURCES = xy1.cpp xy2.cpp

c)         Makefile.am 編譯開執(zhí)行程序的寫法,,編輯 src/Makefile.am 如下

DEFAULT_INCLUDES=-I../include

bin_PROGRAMS = main

main_SOURCES = main.cpp

main_LDADD= -L../lib/.libs/ -lxy

d)         生成 Makefile.in

$ automake –add-missing

4.   編譯運行(以 arm 為示例)

$ ./configure –host=arm-linux        此時機器上需要有 arm-linux-gcc 系統(tǒng)的編譯工具

$ make

$ make install

5.   總結

a)          需要手動編譯的只有 configure.in, Makefile.am, 和源代碼三處

                         i.               Makefile.am 中的常用設置項

AM_CXXFLAGS= 編譯 C++ 程序時所帶的 FLAGS

AM_CFLAGS= 編譯C 程序時所帶的FLAGS

DEFAULT_INCLUDES= 編譯時加入的include 目錄

DEFS= 編譯時定義的DEFIND

b)         注意看執(zhí)行過程中有無錯誤提示

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多