日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux(17)-Make编译,Configure

發(fā)布時間:2023/12/13 linux 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux(17)-Make编译,Configure 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Make編譯機制,Configure

  • 1.Make機制
    • demo1.make編譯
    • demo2.make清理
    • demo3:make 安裝
    • demo4:make 卸載
  • 2.configure
    • 2.1 Autoconf
    • 2.2 軟件的源碼安裝

軟件發(fā)布的一些基礎(chǔ)知識。

  • gcc, cpp, as, ld–施工隊,底層干活工人
  • make --包工頭,指揮工人工作
  • configure–分析師,分析材料是否具備
  • Autoconf–市政規(guī)劃局,派出有用的分析師
  • 內(nèi)存泄漏–如果一個長時間運行的程序,不斷申請新的控價,而且不釋放。內(nèi)存空間被一點一點地消耗光。

    內(nèi)存管理機制

  • windows總是喜歡盡量留出空間來給程序用
  • Linux–盡可能多的把會用到的庫、命令等統(tǒng)統(tǒng)都搬進來,能占多少是多少。要運行程序時,他把東西一點一點搬進內(nèi)存,Linux就把原來占用的資源一點一點往外搬。–Copy-on-Write
  • free 命令查看內(nèi)存使用情況(單位為KB)

  • men–內(nèi)核緩沖后的利用率
  • buffer/cache–軟件占用的內(nèi)存
  • 發(fā)布軟件
    本機編譯得到的二進制文件,需要很多庫文件來協(xié)助才能運行的起來。
    查看程序的依賴庫,使用ldd命令。

    lld ./rubbish1115

    因為需要眾多庫文件協(xié)助,所以在Linux上發(fā)布軟件時都是發(fā)布源碼包,然后在目標系統(tǒng)上再編譯一遍。

    1.Make機制

    Make 也是一個程序,用于統(tǒng)籌規(guī)劃文件編譯。通過Makefile來實現(xiàn)統(tǒng)籌規(guī)劃。能夠依據(jù)文件修改的時間,智能地判斷出哪些模塊需要重新編譯,重新連接。

    windows下的VC也是類似的作用,只不過把他們都用圖形界面封裝了起來。

    make 命令運行的時候,會在當前目錄下查抄Makefile 或者 makefile文件。找到就執(zhí)行,沒找到就報錯。makefile每一段的格式都類似

    目標:原料 <tab>加工方法

    demo1.make編譯

    all:main.o part1.o part2.o gcc main.o part1.o part2.o -o mybin main.o:mian.cgcc -c main.c part1.o:part1.cgcc -c part1.c part2.o:part1.cgcc -c part2.c
  • make 不加任何參數(shù)的時候,從all 這一段開始工作。如果原料部分文件不存在,往下去尋找相應(yīng)的文件,找到后返回,直至加工方法執(zhí)行完成。
  • make +參數(shù)來指定目標,那么就會去只想指定目標對應(yīng)的那一段
  • make 沒有指定目標,makefile中也沒有all, 從文件開始處執(zhí)行。
  • Makefile文件可以引用另一makefile文件,因此一個工程軟件中,經(jīng)常可以看到不同源碼目錄下都有一個makefile文件。
  • demo2.make清理

    clean:rm ./*.orm mybin

    demo3:make 安裝

    將編譯好的mybin文件,復(fù)制到系統(tǒng)中相應(yīng)的目錄中,完成安裝

    install:mybincp ./mybin /user/bin/

    demo4:make 卸載

    作為一個標準的GNU軟件,生成的makefile中應(yīng)該高喊uninstall的定義。如果不規(guī)范的軟件,沒有提供uninstall方法,就只能手動刪除了。

    make uninstall

    (瞎猜,盲寫)

    uninstall:rm /user/bin/mybin

    2.configure

    檢查編譯的各種條件是否必備,檢查各種條件都必備之后,會生成Makefile文件。
    鐵打的make只有一個,流水的configure每個軟件一個。
    運行./configure 之后,會檢查各種各樣的條件,例如 “checking for xxxxx yes/no”, 不是必須的材料沒有了也就沒有了。如果必須的東西沒有了,那么confiugre就會報錯并停止。

    2.1 Autoconf

    自動生成configure文件(幾萬行,自己敲時不可能了。)

  • autoscan–檢查源碼目錄結(jié)構(gòu),生成confiugre.scan報告。(人工)修改該文件,生成configure.in文件,解釋一些有用的內(nèi)容:
  • autoscan

    # AC_INIT(main.c)--說明這個工程主要的圖紙是那個文件. # AM_INIT_AUTOMAKE(rubbish1115,1.0)--說明這個項目的名稱,叫做rubbish115, 版本是1.0. # AC_PROG_CC--configure需要檢查C語言編譯器是否正常. # AC_OUTPUT(Makefile)--configure需要產(chǎn)生的文件叫Makefile.
  • aclocal–查看configure.in文件,對一些宏定義做一些詳細的注解和說明,并生成aclocal.m4報告
  • aclocal

    3.autoconf-依據(jù)configure.in 和aclocal.m4生成configure腳本
    4.automake–生成configure腳本能夠識別和使用的makefile.in文件(自己寫的makefile文件不管用)。需要(人為)提供草稿文件makefile.am。
    makefile.am文件內(nèi)容

    AUTOMAKE_OPTIONS=foreign # 行業(yè)規(guī)范, bin_PROGRAMS=rubbish1115 # 說明編譯之后的程序叫rubbish1115 rubbish1115_SOURCES=main.c ai.c board.c # 說明這個工程包括這三個文件

    Automake主要幫助開發(fā)GNU軟件的人員來維護軟件,所以在執(zhí)行Automake時,默認會檢查目錄下是否存在標準GNU軟件中應(yīng)具備的文件,例如NEWS,AUTHOR, ChangeLog等文件。設(shè)置foreign,則會忽略對這些文件的檢查。

    2.2 軟件的源碼安裝

    原料都準備好之后,依次運行以下三條命令,就能把軟件安裝上

    ./configure
    make
    make install

    總結(jié)

    以上是生活随笔為你收集整理的Linux(17)-Make编译,Configure的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。