精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux下automake應用

wang123a ? 來源:嵌入式技術 ? 作者:嵌入式技術 ? 2022-08-24 15:10 ? 次閱讀

Linux下automake應用

linux 環境下,當項目工程很大的時候,編譯的過程很復雜,所以需要使用 make 工具,自動進行編譯安裝,但是手寫 makefile 文件比較復雜,所幸在 GNU 的計劃中,設計出了一種叫做 Autoconf/Automake 的工具,用來自動生成 makefile 文件,為編譯和安裝程序提供了一個方便快捷的入口。

Automake 是一種幫助『自動』產生 Makefile 文件的軟件,并且讓開發出來的的軟件可以象 Apache,MySQL 和常見的 GNU 軟件一樣,程序設計者只需要寫一些預先定義好的宏 (macro),提交給Automake處理后會產生一個可以供 Autoconf 使用的 Makefile.in文件。再配合利用 Autoconf產生的自動配置設置文件 configure 即可產生一份符合 GNU Makefile 慣例的 Makeifle 了。

Makefile 基本結構雖然很簡單,但是妥善運用這些規則就可以變換出許多不同的花樣。卻也因為這樣,許多剛剛開始學習寫Makefile 時會覺得沒有規范可以遵循,每個人寫出來的Makefile都不大一樣,不知道從哪里下手,而且常常會受到自己的開發環境的限制,只要環境參數不同或者路徑更改,可能 Makefile 就得跟著修改修改。雖然有 GNU Makefile Conventions (GNU Makefile慣例例)訂出一些使用 GNU 程式設計時撰寫 Makefile 的一些標準和規范,但是內容很長而且很復雜,并且經常作一些調整,為了減輕程序開發人員維護Makefile 的負擔,因此出現了Automake。

無論是在 Linux 還是在 Unix 環境中, make 都是一個非常重要的編譯命令。不管是自己進行項目開發還是安裝應用軟件,我們都經常要用到 make 或 make install。利用 make 工具,我們可以將大型的開發項目分解成為多個更易于管理的模塊,對于一個包括幾百個源文件的應用程序,使用 make 和 makefile 工具就可以輕而易舉的理順各個源文件之間紛繁復雜的相互關系。

?2.Ubuntu下make和automake工具安裝

[wbyq@wbyq shared]$ sudo apt-get install make 
[wbyq@wbyq shared]$ sudo apt-get install automake

??注意:automake工具配置生成Makefile文件時會生成連接文件,所以不能在共享路徑去配置生成Makefile文件。

?3.automake構建生成Makefile示例

源碼和目錄結構:

在這里插入圖片描述

??automake構建生成Makefile流程:

pYYBAGMFztSAXetpAATh5gXjWDI079.png#pic_center

?3.1 執行autoscan命令

??執行autoscan生成configure.scan,將configure.scan重名名為configure.ac,編輯configure.ac文件。

[wbyq@wbyq shared]$ ls
autoscan.log  configure.scan  include  lib  main.c  src
[wbyq@wbyq work]$ mv configure.scan configure.ac
[wbyq@wbyq work]$ gedit configure.ac  #修改文件
poYBAGMFztSATCtQAAErywcddag715.png#pic_center

?3.2 執行aclocal命令

??執行aclocal生成configure.scan,生成aclocal.m4 文件。

[wbyq@wbyq shared]$ aclocal
ls[wbyq@wbyq shared]$ ls
aclocal.m4      autoscan.log  include  main.c
autom4te.cache  configure.ac  lib      src

?3.3 執行autoconf生成configure?

[wbyq@wbyq shared]$ autoconf
[wbyq@wbyq shared]$ ls
aclocal.m4      autoscan.log  configure.ac  lib     src
autom4te.cache  configure     include       main.c

3.4 執行autoheader生成config.h.in

[wbyq@wbyq shared]$ autoheader 
[wbyq@wbyq shared]$ ls
aclocal.m4      autoscan.log  configure     include  main.c
autom4te.cache  config.h.in   configure.ac  lib      src

?2.5 創建Makefile.am文件

??創建Makefile.am文件,編輯Makefile.am。

[wbyq@wbyq shared]$ touch Makefile.am

??Makefile.am文件內容:

AUTOMAKE_OPTIONS=foreign #指定協議規范
bin_PROGRAMS=app  #生成的可執行文件
#AUTOMAKE_OPTIONS = subdir-objects 
app_SOURCES=main.c $(top_srcdir)/src/my_du.c $(top_srcdir)/src/my_cat.c $(top_srcdir)/src/my_cp.c
AM_CPPFLAGS=-Iinclude #指定頭文件路徑
#編譯動態庫
lib_LTLIBRARIES=libmyfile.la #動態庫名
libmyfile_la_SOURCES=$(top_srcdir)/src/my_du.c $(top_srcdir)/src/my_cat.c $(top_srcdir)/src/my_cp.c #生成動態庫依賴文件
libmyfile_la_CPPFLAGS=-I$(top_srcdir)/include #依賴頭文件路徑
#編譯靜態庫
lib_LIBRARIES=libmyfile.a
libmyfile_a_SOURCES=$(top_srcdir)/src/my_du.c $(top_srcdir)/src/my_cat.c $(top_srcdir)/src/my_cp.c
#打包頭文件
include_HEADERS=$(top_srcdir)/include/*
#實例文件
data_DATA=$(top_srcdir)/main.c

??PROGRAMS:表示可執行文件
??LIBRARIES:表示靜態庫文件
??LTLIBRARIES:表示動態庫文件,前面的 LT 表示 libtool。
??HEADERS:頭文件。

2.6執行automake --add-missing生成Makefile.in文件

注意:當創建動態庫時,需要在執行 automake --add-missing之前需要執行libtoolize -f -c

若沒有libtool工具則在線安裝:sudo apt-get install libtool

[wbyq@wbyq shared]$ libtoolize -f -c
[wbyq@wbyq shared]$ automake --add-missing

?2.7 執行configure生成Makefile

[wbyq@wbyq shared]$ ./configure --prefix=$PWD/_install --enable-shared --enable-static 

??--prefix=$PWD/_install ??----指定安裝路徑
??--enable-shared ??----編譯生成動態庫
??--enable-static ??----編譯生成靜態庫

?2.8 編譯安裝make && make install

[wbyq@wbyq shared]$ make && make install

??編譯生成文件信息

pYYBAGMFztSAcG4yAADBX4Fkixs056.png#pic_center

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11232

    瀏覽量

    208939
  • Makefile
    +關注

    關注

    1

    文章

    125

    瀏覽量

    19163
收藏 人收藏

    評論

    相關推薦

    Linux開發_Linux進程編程

    介紹Linux進程概念、進程信號捕獲、進程管理相關的命令的使用等知識點。
    的頭像 發表于 09-17 15:38 ?1329次閱讀
    <b class='flag-5'>Linux</b>開發_<b class='flag-5'>Linux</b><b class='flag-5'>下</b>進程編程

    Linux GCC的編譯

    一、Linux 多文件編譯 在上一篇 Linux 的 C 編程我們知道了 Linux 的編
    的頭像 發表于 09-11 15:18 ?2541次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>下</b>GCC的編譯

    如何學習linux的基礎知識

    C語言環境概述:Gcc使用方法:Gdb調試技術,Autoconf Automake Makefile,代碼優化,熟悉Linux系統的開發環境,熟悉Gcc編譯器,熟悉Makefile規則編寫Hello,World程序,使用ma
    發表于 08-03 14:28

    Linux的網絡HOOK實現

    最近瘋狂的研究Linux的種種功能,也頗有心得,這里講述一Linux的Net的Hook,使用net的Hook可以實現很多很多非常底層的功能
    發表于 05-14 10:27 ?5126次閱讀

    linuxvim使用詳解

    linuxvim使用科普教程,供大家學習使用。
    發表于 03-16 15:41 ?0次下載

    Linux基于Socket的網絡編程

    linux開發編程教程資料——Linux基于Socket的網絡編程,感興趣的小伙伴們可以看一看。
    發表于 08-23 16:23 ?0次下載

    Linux的網絡編程總結

    linux開發編程教程資料——Linux的網絡編程總結,感興趣的小伙伴們可以看一看。
    發表于 08-23 16:23 ?0次下載

    LinuxSocket網絡編程

    linux開發編程教程資料——LinuxSocket網絡編程,感興趣的小伙伴們可以看一看。
    發表于 08-23 16:23 ?0次下載

    linux C編程

    linux C編程
    發表于 10-25 08:54 ?9次下載
    <b class='flag-5'>linux</b> <b class='flag-5'>下</b>C編程

    LinuxQt的安裝

    LinuxQt的安裝
    發表于 11-09 17:14 ?5次下載

    Linux系統軟硬鏈接原理

    Linux系統軟硬鏈接原理
    發表于 11-23 08:49 ?1次下載

    LINUX系統教程之如何在Linux系統進行編程

    本文檔的主要內容詳細介紹的是LINUX系統教程之如何在Linux系統進行編程主要內容包括了:程序開發過程 ,Linux編程環境和開發工具 ,Lin
    發表于 12-18 19:09 ?9次下載

    Linux使用autoconf和automake生成Makefile

    ?作為Linux的程序開發人員,一定都遇到過Makefile,用make命令來編譯自己寫的程序確實是很方便。一般情況,大家都是手工寫一個簡單Makefile,如果要想寫出一個符合
    發表于 04-02 14:41 ?259次閱讀

    linux添加路由的方法

    linux添加路由的方法:
    發表于 05-26 09:44 ?3720次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>下</b>添加路由的方法

    linuxnodemcu環境搭建

    構建esp8266編譯鏈sudo apt-get install build-essential zip gdb git vim make unrar autoconf automake
    發表于 10-25 14:51 ?13次下載
    <b class='flag-5'>linux</b><b class='flag-5'>下</b>nodemcu環境搭建