一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

然后添加兩句話

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、執(zhí)行aclocal

執(zhí)行aclocal命令會生成aclocal.m4文件,這個文件包含了用于自動配置和構(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文件。這個文件是由configure.ac中的一些宏命令生成的模板文件,它包含了預(yù)處理器定義和配置選項,會在configure腳本執(zhí)行時生成最終的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是用來描述源代碼和生成目標(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命令會根據(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命令會生成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í)行文件拷貝到板子中運行

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)用可以正常運行,這證明使用autotools工具生成Makefile是沒有問題的。

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

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

    關(guān)注

    5152

    文章

    19675

    瀏覽量

    317643
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5682

    瀏覽量

    104825
  • Makefile
    +關(guān)注

    關(guān)注

    1

    文章

    125

    瀏覽量

    19735
  • autotools
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    Makefile編寫

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

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

    Makefile工程實踐視頻課程(第2季):使用Autotools自動生成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í)資料,但絕大部分給你的只是一個知識點,與將Makefile運用到項目中(尤其是大型項目)的差距非常的大。因為,將
    發(fā)表于 01-05 17:05 ?9次下載

    跟我一起學(xué)makefile

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

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

    ,尤其對于一個較大的項目而言更是如此。那么,有沒有一種輕松的手段生成makefile而同時又能讓用戶享受make的優(yōu)越性呢?本節(jié)要講的autotools系列工具正是為此而設(shè)的,它只需用戶輸入簡單的目標(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)核的,可以說關(guān)于2.6內(nèi)核Makefile相關(guān)的文章鳳毛麟角,筆者抽時間完成了這篇分析文章,讓讀者迅速熟悉Linux最新Makefile體系,從而加深對內(nèi)核的理解,同時也希望能
    發(fā)表于 11-02 10:12 ?1次下載

    makefile的基本語法

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

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

    Makefile的重要性 會不會寫makefile,從一個側(cè)面說明了一個人是否具備完成大型工程的能力 makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個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)典教程免費下載

    Linux下使用autoconf和automake生成Makefile

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

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

    使用Makefile來管理程序,負(fù)責(zé)協(xié)調(diào)各文件之間的依賴關(guān)系和組織生成有用文件。本文參考C語言中文網(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】簡單實用的Makefile模板來了

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

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

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