91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于Makefile自動(dòng)生成-autotools的使用

ElfBoard ? 2024-07-25 15:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux應(yīng)用開(kāi)發(fā)中,編寫Makefile是一項(xiàng)必備技能,因?yàn)樗x了工程中所有文件的編譯順序、規(guī)則和依賴關(guān)系,決定了哪些文件需要編譯以及它們的編譯順序。

雖然對(duì)初級(jí)開(kāi)發(fā)者而言,編寫復(fù)雜的Makefile并非日常任務(wù),但遇見(jiàn)需要構(gòu)建大型軟件項(xiàng)目時(shí),利用工具自動(dòng)生成Makefile就顯得尤為關(guān)鍵。接下來(lái),我們將重點(diǎn)介紹一款自動(dòng)化構(gòu)建工具——Autotools,幫助開(kāi)發(fā)者高效地管理項(xiàng)目構(gòu)建流程。

1、安裝需要工具

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

2、測(cè)試程序編寫

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將生成一個(gè)名為configure.scan的文件,其中包含了自動(dòng)掃描到的可能需要配置的信息。

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,然后進(jìn)一步編輯該文件。開(kāi)發(fā)者通常會(huì)添加更多的配置檢查和必要的宏定義,以確保生成的configure 腳本能夠正確地檢測(cè)和配置系統(tǒng)環(huán)境。

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為當(dāng)前版本,BUG-REPORT-ADDRESS為bug匯報(bào)地址。

然后添加兩句話

AM_INIT_AUTOMAKE AC_CONFIG_FILES([Makefile])

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

AC_CONFIG_FILES宏告訴autotools生成哪些文件。在這種情況下,它指定生成一個(gè)名為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、執(zhí)行aclocal

執(zhí)行aclocal命令會(huì)生成aclocal.m4文件,這個(gè)文件包含了用于自動(dòng)配置和構(gòu)建軟件的宏定義和規(guī)則。

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命令根據(jù)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文件。這個(gè)文件是由configure.ac中的一些宏命令生成的模板文件,它包含了預(yù)處理器定義和配置選項(xiàng),會(huì)在configure腳本執(zhí)行時(shí)生成最終的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是用來(lái)描述源代碼和生成目標(biāo)之間依賴關(guān)系的Automake規(guī)則文件

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命令會(huì)根據(jù)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命令會(huì)生成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生成可執(zhí)行文件

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、將可執(zhí)行文件拷貝到板子中運(yùn)行

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

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

執(zhí)行應(yīng)用終端打印“Hello,ElfBoard”應(yīng)用可以正常運(yùn)行,這證明使用autotools工具生成Makefile是沒(méi)有問(wèn)題的。

至此,就完成了Makefile自動(dòng)生成利器—autotools的運(yùn)用的介紹。衷心期望這些知識(shí)能為正在屏幕前閱讀的你帶來(lái)實(shí)質(zhì)性的幫助,激發(fā)你在軟件工程領(lǐng)域不斷探索與創(chuàng)新。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20435

    瀏覽量

    333945
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6288

    瀏覽量

    118015
  • Makefile
    +關(guān)注

    關(guān)注

    1

    文章

    125

    瀏覽量

    20335
  • autotools
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    6238
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    求助:eclipse開(kāi)發(fā)嵌入式linux驅(qū)動(dòng)自動(dòng)生成makefile不能用

    eclipse開(kāi)發(fā)嵌入式linux驅(qū)動(dòng)自動(dòng)生成makefile不能用,用eclipse開(kāi)發(fā)嵌入式linux驅(qū)動(dòng),自己寫的Makefile沒(méi)有問(wèn)題,可以
    發(fā)表于 01-29 12:31

    如何調(diào)整MPlab-ide生成makefile

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

    Makefile編寫

    Makefile編寫 Makefile編寫在很多時(shí)候有著很大的作用,那么我們?cè)撊绾尉帉懩?,下面大家一起?lái)了解一下關(guān)于Makefile編寫的內(nèi)容。1. make和
    發(fā)表于 11-02 15:59

    怎樣使用Autotools自動(dòng)生成Makefile文件呢

    Makefile工程實(shí)踐視頻課程(第2季):使用Autotools自動(dòng)生成Makefile...
    發(fā)表于 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)
    發(fā)表于 10-21 17:12 ?26次下載

    駕馭Makefile

    駕馭Makefile在網(wǎng)上你能找到很多關(guān)于Makefile的學(xué)習(xí)資料,但絕大部分給你的只是一個(gè)知識(shí)點(diǎn),與將Makefile運(yùn)用到項(xiàng)目中(尤其是大型項(xiàng)目)的差距非常的大。因?yàn)椋瑢?/div>
    發(fā)表于 01-05 17:05 ?9次下載

    跟我一起學(xué)makefile

    關(guān)于makefile學(xué)習(xí),深入了解嵌入式下makefile的編寫
    發(fā)表于 05-23 18:21 ?0次下載

    Linux下C編程基礎(chǔ)之使用autotools

    ,尤其對(duì)于一個(gè)較大的項(xiàng)目而言更是如此。那么,有沒(méi)有一種輕松的手段生成makefile而同時(shí)又能讓用戶享受make的優(yōu)越性呢?本節(jié)要講的autotools系列工具正是為此而設(shè)的,它只需用戶輸入簡(jiǎn)單的目標(biāo)文件、依賴文件、文件目錄等就
    發(fā)表于 10-18 14:26 ?0次下載
    Linux下C編程基礎(chǔ)之使用<b class='flag-5'>autotools</b>

    關(guān)于Linux 2.6內(nèi)核Makefile的分析

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

    makefile的基本語(yǔ)法

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

    Makefile是什么?Makefile工作原理是怎樣的?Makefile經(jīng)典教程免費(fèi)下載

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

    Linux下使用autoconf和automake生成Makefile

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

    嵌入式中的Makefile應(yīng)用

    使用Makefile來(lái)管理程序,負(fù)責(zé)協(xié)調(diào)各文件之間的依賴關(guān)系和組織生成有用文件。本文參考C語(yǔ)言中文網(wǎng)有關(guān)Makefile的教程,http://c.biancheng.net/view/7094.html一....
    發(fā)表于 11-03 17:06 ?11次下載
    嵌入式中的<b class='flag-5'>Makefile</b>應(yīng)用

    Makefile】簡(jiǎn)單實(shí)用的Makefile模板來(lái)了

    【Linux + Makefile】簡(jiǎn)單實(shí)用的Makefile模板來(lái)了
    的頭像 發(fā)表于 08-31 12:46 ?2743次閱讀
    【<b class='flag-5'>Makefile</b>】簡(jiǎn)單實(shí)用的<b class='flag-5'>Makefile</b>模板來(lái)了

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

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