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

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

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

3天內不再提示

關于Makefile自動生成-autotools的使用

ElfBoard ? 2024-07-25 15:50 ? 次閱讀

Linux應用開發中,編寫Makefile是一項必備技能,因為它定義了工程中所有文件的編譯順序、規則和依賴關系,決定了哪些文件需要編譯以及它們的編譯順序。

雖然對初級開發者而言,編寫復雜的Makefile并非日常任務,但遇見需要構建大型軟件項目時,利用工具自動生成Makefile就顯得尤為關鍵。接下來,我們將重點介紹一款自動化構建工具——Autotools,幫助開發者高效地管理項目構建流程。

1、安裝需要工具

elf@ubuntu:~/work$ sudo apt-get install automake

2、測試程序編寫

elf@ubuntu:~/work/autotools$ vi main.c

#include #include #include int main(void) { print(); return 0; }

寫好之后保存退出。

elf@ubuntu:~/work/autotools$ vi hello.c

#include #include void print(void) { printf("Hello,ElfBoard!\n"); }

寫好之后保存退出。

elf@ubuntu:~/work/autotools$ vi hello.h

#ifndef __HELLO_H__ #define __HELLO_H__ void print(void); #endif

寫好之后保存退出。

3、使用autoscan工具生成configure.scan 文件

autoscan將生成一個名為configure.scan的文件,其中包含了自動掃描到的可能需要配置的信息

elf@ubuntu:~/work/autotools$ autoscan elf@ubuntu:~/work/autotools$ ls autoscan.log configure.scan hello.c hello.h main.c

4、修改configure.ac文件

將configure.scan文件重命名為configure.ac,然后進一步編輯該文件。開發者通常會添加更多的配置檢查和必要的宏定義,以確保生成的configure 腳本能夠正確地檢測和配置系統環境。

elf@ubuntu:~/work/autotools$ mv configure.scan configure.ac

修改configure.ac

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

修改為

AC_INIT(main,0.0.1, [bug@sounos.org])

其中:FULL-PACKAGE-NAME為程序名稱,VERSION為當前版本,BUG-REPORT-ADDRESS為bug匯報地址。

然后添加兩句話

AM_INIT_AUTOMAKE AC_CONFIG_FILES([Makefile])

AM_INIT_AUTOMAKE宏用于初始化automake,告訴autotools使用automake工具來管理生成的Makefile。

AC_CONFIG_FILES宏告訴autotools生成哪些文件。在這種情況下,它指定生成一個名為Makefile 的文件。

修改完成的configure.ac如下:

# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) #AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_INIT(main,0.0.1, [bug@sounos.org]) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([hello.h]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. AC_CHECK_HEADERS([string.h]) # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile]) AC_OUTPUT

5、執行aclocal

執行aclocal命令會生成aclocal.m4文件,這個文件包含了用于自動配置和構建軟件的宏定義和規則。

elf@ubuntu:~/work/autotools$ aclocal

elf@ubuntu:~/work/autotools$ ls aclocal.m4 autom4te.cache autoscan.log configure.ac hello.c hello.h main.c

6、autoconf

autoconf命令根據configure.ac文件生成configure腳本。

elf@ubuntu:~/work/autotools$ autoconf

elf@ubuntu:~/work/autotools$ ls aclocal.m4 autom4te.cache autoscan.log configure configure.ac hello.c hello.h main.c

7、autoheader

autoheader命令用于生成config.h.in文件。這個文件是由configure.ac中的一些宏命令生成的模板文件,它包含了預處理器定義和配置選項,會在configure腳本執行時生成最終的config.h文件。

elf@ubuntu:~/work/autotools$ autoheader

elf@ubuntu:~/work/autotools$ ls aclocal.m4 autom4te.cache autoscan.log config.h.in configure configure.ac hello.c hello.h main.c

8、制作Makefile.am

Makefile.am是用來描述源代碼和生成目標之間依賴關系的Automake規則文件

elf@ubuntu:~/work/autotools$ vi Makefile.am

AUTOMAKE_OPTIONS= foreign bin_PROGRAMS= main main_SOURCES= main.c hello.c

9、automake --add-missing

automake --add-missing命令會根據Makefile.am文件生成Makefile.in文件。

elf@ubuntu:~/work/autotools$ automake --add-missing configure.ac:12: installing './compile' configure.ac:7: installing './install-sh' configure.ac:7: installing './missing' Makefile.am: installing './depcomp'

elf@ubuntu:~/work/autotools$ ls aclocal.m4 autom4te.cache autoscan.log compile config.h.in configure configure.ac depcomp hello.c hello.h install-sh main.c Makefile.am Makefile.in missing

10、./configure --host=arm

./configure --host=arm命令會生成Makefile文件。

elf@ubuntu:~/work/autotools$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setupcortexa7hf-neon-poky-linux-gnueabi

elf@ubuntu:~/work/autotools$ ./configure --host=arm

11、make生成可執行文件

elf@ubuntu:~/work/autotools$ make

elf@ubuntu:~/work/autotools$ ls aclocal.m4 autoscan.log config.h config.log configure depcomp hello.h install-sh main.c Makefile Makefile.in stamp-h1 autom4te.cache compile config.h.in config.status configure.ac hello.c hello.o main main.o Makefile.am missing

12、將可執行文件拷貝到板子中運行

elf@ubuntu:~/work/autotools$ scp main root@192.168.5.98:/home/root/

root@ELF1:~# ./main Hello,ElfBoard!

執行應用終端打印“Hello,ElfBoard”應用可以正常運行,這證明使用autotools工具生成Makefile是沒有問題的。

至此,就完成了Makefile自動生成利器—autotools的運用的介紹。衷心期望這些知識能為正在屏幕前閱讀的你帶來實質性的幫助,激發你在軟件工程領域不斷探索與創新。

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

    關注

    5068

    文章

    19017

    瀏覽量

    303242
  • 開發板
    +關注

    關注

    25

    文章

    4943

    瀏覽量

    97191
  • Makefile
    +關注

    關注

    1

    文章

    125

    瀏覽量

    19161
  • autotools
    +關注

    關注

    0

    文章

    4

    瀏覽量

    6088
收藏 人收藏

    評論

    相關推薦

    求助:eclipse開發嵌入式linux驅動自動生成makefile不能用

    eclipse開發嵌入式linux驅動自動生成makefile不能用,用eclipse開發嵌入式linux驅動,自己寫的Makefile沒有問題,可以
    發表于 01-29 12:31

    如何調整MPlab-ide生成makefile?

    你好!我試圖修改MPLAB IDE生成makefile,以便在編譯每個文件之前執行代碼檢查器。我想修改makefile生成器或makefile
    發表于 09-02 13:15

    Makefile編寫

    Makefile編寫 Makefile編寫在很多時候有著很大的作用,那么我們該如何編寫呢,下面大家一起來了解一下關于Makefile編寫的內容。1. make和
    發表于 11-02 15:59

    怎樣使用Autotools自動生成Makefile文件呢

    Makefile工程實踐視頻課程(第2季):使用Autotools自動生成Makefile...
    發表于 12-23 06:02

    Linux autotools 教程

    ) that want to learn Autotools.This document was updated for the following releases of the Autotools:GNU Autoconf 2.61 (November 2006)
    發表于 10-21 17:12 ?26次下載

    駕馭Makefile

    駕馭Makefile在網上你能找到很多關于Makefile的學習資料,但絕大部分給你的只是一個知識點,與將Makefile運用到項目中(尤其是大型項目)的差距非常的大。因為,將
    發表于 01-05 17:05 ?9次下載

    跟我一起學makefile

    關于makefile學習,深入了解嵌入式下makefile的編寫
    發表于 05-23 18:21 ?0次下載

    Linux下C編程基礎之使用autotools

    ,尤其對于一個較大的項目而言更是如此。那么,有沒有一種輕松的手段生成makefile而同時又能讓用戶享受make的優越性呢?本節要講的autotools系列工具正是為此而設的,它只需用戶輸入簡單的目標文件、依賴文件、文件目錄等就
    發表于 10-18 14:26 ?0次下載
    Linux下C編程基礎之使用<b class='flag-5'>autotools</b>

    關于Linux 2.6內核Makefile的分析

    的介紹文章都是基于2.4內核的,可以說關于2.6內核Makefile相關的文章鳳毛麟角,筆者抽時間完成了這篇分析文章,讓讀者迅速熟悉Linux最新Makefile體系,從而加深對內核的理解,同時也希望能
    發表于 11-02 10:12 ?1次下載

    makefile的基本語法

     在Makefile中,最重要的三個概念是:目標(target)、依賴關系(dependency)和命令(command)。目標是指要干什么,即運行make后生成什么;依賴是指明目標所依賴的其他目標;命令則告訴make如何生成
    發表于 11-12 10:15 ?1.1w次閱讀

    Makefile是什么?Makefile工作原理是怎樣的?Makefile經典教程免費下載

    Makefile的重要性 會不會寫makefile,從一個側面說明了一個人是否具備完成大型工程的能力 makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make
    發表于 09-12 17:19 ?0次下載
    <b class='flag-5'>Makefile</b>是什么?<b class='flag-5'>Makefile</b>工作原理是怎樣的?<b class='flag-5'>Makefile</b>經典教程免費下載

    Linux下使用autoconf和automake生成Makefile

    自由軟件慣例的Makefile就不那么容易了. 在本文中,將介紹如何使用autoconf和automake兩個工具來幫助我們自動生成符合自由軟件慣例的Makefile,這樣就可以象常
    發表于 04-02 14:41 ?258次閱讀

    嵌入式中的Makefile應用

    使用Makefile來管理程序,負責協調各文件之間的依賴關系和組織生成有用文件。本文參考C語言中文網有關Makefile的教程,http://c.biancheng.net/view/7094.html一....
    發表于 11-03 17:06 ?11次下載
    嵌入式中的<b class='flag-5'>Makefile</b>應用

    Makefile】簡單實用的Makefile模板來了

    【Linux + Makefile】簡單實用的Makefile模板來了
    的頭像 發表于 08-31 12:46 ?1874次閱讀
    【<b class='flag-5'>Makefile</b>】簡單實用的<b class='flag-5'>Makefile</b>模板來了

    Makefile是如何編譯代碼文件的?

    makefile文件最常用的作用是,告訴make程序,如何來編譯以及連接程序,最終生成可執行的二進制文件。
    的頭像 發表于 05-18 15:27 ?4394次閱讀
    <b class='flag-5'>Makefile</b>是如何編譯代碼文件的?