openwrtmakefile的使用與管理

一、Makefile的基本知識

Makefile是一種可以執行程序自動化編譯的工具,它通過對文件和源代碼的依賴性關係來確定需要重新編譯的文件,從而提高了編譯和構建的效率。

Makefile文件包含一系列的規則,每條規則定義了一個目標文件、依賴文件和如何生成目標文件的指令。其中,目標文件是所需要生成的文件,依賴文件是目標文件生成所需要的文件或者是其他目標文件。

例如,下面是一個簡單的Makefile文件的示例:

target: dependency1 dependency2
    command1
    command2

其中,「target」是目標文件,依賴文件是「dependency1」和「dependency2」,「command1」和「command2」是生成目標文件的指令。

二、openwrtmakefile的基本結構

openwrtmakefile是基於Makefile的一種擴展,它專門用於編譯和構建OpenWrt軟件包。

下面是一個openwrtmakefile的基本結構示例:

include $(TOPDIR)/rules.mk

PKG_NAME:=example
PKG_VERSION:=1.0.0
PKG_RELEASE:=1

PKG_SOURCE_URL:=http://example.com
PKG_SOURCE:=example-$(PKG_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_MD5SUM:=0123456789abcdef0123456789abcdef

include $(INCLUDE_DIR)/package.mk

define Package/example
  SECTION:=utils
  CATEGORY:=Utilities
  TITLE:=Example package
  DEPENDS:=+libopenssl
endef

define Package/example/description
 This is an example package for OpenWrt.
endef

define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) $(DL_DIR)/$(PKG_SOURCE) $(PKG_BUILD_DIR)/$(PKG_SOURCE)
    cd $(PKG_BUILD_DIR) && tar xzf $(PKG_SOURCE)
endef

define Build/Compile
    $(MAKE) -C $(PKG_BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
endef

define Package/example/install
    $(INSTALL_DIR) $(1)/usr/bin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_SOURCE_SUBDIR)/example $(1)/usr/bin/
endef

$(eval $(call BuildPackage,example))

其中,第1行引用了OpenWrt的rules.mk文件,第3-7行定義了軟件包的名稱、版本號、發佈號等基本信息,第9-14行定義了軟件包的基本信息和依賴關係。之後的define語句分別定義了軟件包不同階段的操作。

通過openwrtmakefile,我們可以輕鬆地定義軟件包各個階段的操作,如編譯、安裝、打包等。

三、openwrtmakefile中常用的內容

1. 定義軟件包信息

在openwrtmakefile中,我們可以通過define語句來定義軟件包的基本信息和依賴關係。

define Package/
  SECTION:=
CATEGORY:= TITLE:= DEPENDS:= endef </pre><p>其中,「」是軟件包的名稱,「</p><section>」是軟件包所屬的部分,「」是軟件包所屬的類別,例如「Utilities」或「Network」,「<title>」是軟件包的名稱,而「」是軟件包的依賴關係,例如「+libopenssl」或「kmod-usb-serial」等。</p><h4><span class=ez-toc-section id=2_25E525AE259A25E425B9258925E825BD25AF25E425BB25B625E5258C258525E7259A258425E725BC259625E825AF259125E32580258125E525AE258925E825A3258525E32580258125E5258825A025E9259925A425E725AD258925E9259825B625E625AE25B525E62593258D25E425BD259C></span>2. 定義軟件包的編譯、安裝、刪除等階段操作<span class=ez-toc-section-end></span></h4><p>在openwrtmakefile中,我們可以通過define語句來定義軟件包在不同階段的操作。</p><pre> define Build/Prepare # 編譯前的操作 endef define Build/Compile # 編譯操作 endef define Package//install # 安裝操作 endef define Package//uninstall # 刪除操作 endef </pre><h4><span class=ez-toc-section id=3_25E525AE259A25E425B9258925E825BD25AF25E425BB25B625E5258C258525E7259A258425E625BA259025E425BB25A325E725A0258125E425BF25A125E6258125AF25E52592258C25E425B8258B25E825BD25BD25E5259C25B025E5259D2580></span>3. 定義軟件包的源代碼信息和下載地址<span class=ez-toc-section-end></span></h4><p>在openwrtmakefile中,我們可以通過下面的內容來定義軟件包的源代碼信息和下載地址。</p><pre> PKG_SOURCE_URL:= PKG_SOURCE:= PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_MD5SUM:= </pre><p>其中,「」是軟件包的下載地址,「」是下載的文件名,「」是文件的MD5校驗值。</p><h4><span class=ez-toc-section id=4_25E525AE259A25E425B9258925E825BD25AF25E425BB25B625E5258C258525E7259A258425E62596258725E425BB25B625E525AE258925E825A3258525E7259B25AE25E525BD2595></span>4. 定義軟件包的文件安裝目錄<span class=ez-toc-section-end></span></h4><p>在openwrtmakefile中,我們可以通過下面的內容來定義軟件包的文件安裝目錄。</p><pre> define Package//install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/ $(1)/usr/bin/ endef </pre><p>其中,「」是編譯後所生成的文件,例如「example」。</p><h3><span class=ez-toc-section id=25E5259B259B25E325802581openwrtmakefile25E7259A258425E525AE259E25E92599258525E525BA259425E7259425A8></span>四、openwrtmakefile的實際應用<span class=ez-toc-section-end></span></h3><p>下面我們以實際的openwrtmakefile為例,來介紹它的應用。</p><h4><span class=ez-toc-section id=1_25E92585258D25E725BD25AE25E62596258725E425BB25B625E7259A258425E72594259F25E625882590></span>1. 配置文件的生成<span class=ez-toc-section-end></span></h4><pre> define Package//conffiles /etc/.conf endef define Package//preinst #!/bin/sh if [ -e /etc/.conf ]; then cp /etc/.conf /tmp/.conf fi endef define Package//postinst #!/bin/sh if [ ! -e /etc/.conf ]; then cp /tmp/.conf /etc/.conf fi endef define Package//prerm #!/bin/sh rm -f /tmp/.conf endef define Package//postrm endef </pre><p>在上面的示例中,我們定義了軟件包的配置文件和四個不同階段的操作,包括「conffiles」、「preinst」、「postinst」、「prerm」和「postrm」。</p><p>其中,「conffiles」是軟件包的配置文件,「preinst」表示在安裝之前的操作,「postinst」表示在安裝之後的操作,「prerm」表示在卸載之前的操作,而「postrm」表示在卸載之後的操作。</p><h4><span class=ez-toc-section id=2_25E525AE258925E825A3258525E82584259A25E6259C25AC25E7259A258425E72594259F25E625882590></span>2. 安裝腳本的生成<span class=ez-toc-section-end></span></h4><pre> define Build/Prepare endef define Package//postinst #!/bin/sh if [ -z "$${IPKG_INSTROOT}" ]; then /etc/init.d/ enable /etc/init.d/ start fi endef define Package//prerm #!/bin/sh if [ -z "$${IPKG_INSTROOT}" ]; then /etc/init.d/ stop /etc/init.d/ disable fi define Package//install #安裝腳本 $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/ $(1)/etc/init.d/ chmod +x $(1)/etc/init.d/ #常規文件 $(CP) ./files/* $(1)/ $(RM) $(1)/files/ endef </pre><p>上面的示例中,我們可以看到「postinst」和「prerm」腳本,它們在安裝和卸載軟件包時分別運行。在「postinst」腳本中,我們啟用並啟動一個服務,而在「prerm」腳本中,我們停止並禁用該服務。另外,在「install」操作中,我們安裝了腳本和常規文件。</p><h4><span class=ez-toc-section id=3_25E92599258425E5258A25A025E5259125BD25E425BB25A425E7259A258425E72594259F25E625882590></span>3. 附加命令的生成<span class=ez-toc-section-end></span></h4><pre> define Package//install # 安裝命令 $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/ $(1)/usr/bin/ # 附加命令 $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) files/ $(1)/usr/sbin/ endef </pre><p>在上面的示例中,我們安裝了一個命令,它對應着編譯中生成的文件,而另一個附加命令則是通過安裝一些腳本來實現的。</p><h3><span class=ez-toc-section id=25E425BA259425E32580258125E6258025BB25E725BB2593></span>五、總結<span class=ez-toc-section-end></span></h3><p>本文介紹了openwrtmakefile的基本知識、結構和常用內容,以及一些實際應用的示例。通過openwrtmakefile,我們可以靈活地管理和控制OpenWrt的軟件包構建和編譯過程。</p><p>Makefile本身是一種強大而高效的工具,而openwrtmakefile則為OpenWrt提供了更為便捷的軟件包編譯和打包功能,使得開發和維護OpenWrt軟件包變得更加簡單和快捷。</p><div class=entry-readmore><div class=entry-readmore-btn></div></div><div class=entry-copyright><p>原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/251716.html</p></div></div><div class=entry-tag><a href=https://www.506064.com/zh-hk/n/tag/openwrtmakefile rel=tag>openwrtmakefile</a></div><div class=entry-action><div class=btn-zan data-id=251716><i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-thumb-up-fill></use></svg></i> 贊 <span class=entry-action-num>(0)</span></div><div class=btn-dashang> <i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-cny-circle-fill></use></svg></i> 打賞 <span class="dashang-img dashang-img2"> <span> <img src=//www.506064.com/wp-content/uploads/2024/12/2024121004124055.png alt=微信掃一掃> 微信掃一掃 </span> <span> <img src=//www.506064.com/wp-content/uploads/2024/12/2024121004113670.png alt=支付寶掃一掃> 支付寶掃一掃 </span> </span></div></div><div class=entry-bar><div class=entry-bar-inner><div class=entry-bar-author> <a data-user=22595 target=_blank href=https://www.506064.com/zh-hk/spacehome/f08e84c43f class="avatar j-user-card"> <img alt=小藍的頭像 src=/wp-content/uploads/2024/11/none.jpg class='avatar avatar-60 photo' height=60 width=60><span class=author-name>小藍</span> </a></div><div class=entry-bar-info><div class="info-item meta"> <a class="meta-item j-heart" href=javascript:; data-id=251716><i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-star></use></svg></i> <span class=data>0</span></a> <a class=meta-item href=#comments><i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-comment></use></svg></i> <span class=data>0</span></a></div><div class="info-item share"> <a class="meta-item mobile j-mobile-share" href=javascript:; data-id=251716 data-qrcode=https://www.506064.com/zh-hk/n/251716.html><i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-share></use></svg></i> 生成海報</a> <a class="meta-item wechat" data-share=wechat target=_blank rel=nofollow href=#> <i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-wechat></use></svg></i> </a> <a class="meta-item weibo" data-share=weibo target=_blank rel=nofollow href=#> <i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-weibo></use></svg></i> </a> <a class="meta-item qq" data-share=qq target=_blank rel=nofollow href=#> <i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-qq></use></svg></i> </a></div><div class="info-item act"> <a href=javascript:; id=j-reading><i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-article></use></svg></i></a></div></div></div></div></div><div class=entry-page><div class="entry-page-prev entry-page-nobg"> <a href=https://www.506064.com/zh-hk/n/251752.html title=c語言去掉一行,C語言去掉換行符 rel=prev> <span>c語言去掉一行,C語言去掉換行符</span> </a><div class=entry-page-info> <span class=pull-left><i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-arrow-left-double></use></svg></i> 上一篇</span> <span class=pull-right>2024-12-13 17:32</span></div></div><div class="entry-page-next entry-page-nobg"> <a href=https://www.506064.com/zh-hk/n/251719.html title="EMQ X SSL:如何在MQTT Broker中啟用SSL/TLS端口" rel=next> <span>EMQ X SSL:如何在MQTT Broker中啟用SSL/TLS端口</span> </a><div class=entry-page-info> <span class=pull-right>下一篇 <i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-arrow-right-double></use></svg></i></span> <span class=pull-left>2024-12-13 17:32</span></div></div></div><div id=comments class=entry-comments><div id=respond class=comment-respond><h3 id="reply-title" class="comment-reply-title">發表回復 <small><a rel=nofollow id=cancel-comment-reply-link href=/zh-hk/n/251716.html#respond style=display:none;><i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-close></use></svg></i></a></small></h3><div class=comment-form><div class=comment-must-login>請登錄後評論...</div><div class=form-submit><div class="form-submit-text pull-left"><a href=https://www.506064.com/zh-hk/login>登錄</a>後才能評論</div> <button name=submit type=submit id=must-submit class="wpcom-btn btn-primary btn-xs submit">提交</button></div></div></div></div></article></main><aside class=sidebar><div class="widget widget_profile"><div class=profile-cover><img class=j-lazy src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png data-original=//www.506064.com/wp-content/uploads/2024/03/1617180342.jpg alt=小藍></div><div class=avatar-wrap> <a target=_blank href=https://www.506064.com/zh-hk/spacehome/f08e84c43f class=avatar-link><img alt=小藍的頭像 src=/wp-content/uploads/2024/11/none.jpg class='avatar avatar-120 photo' height=120 width=120></a></div><div class=profile-info> <a target=_blank href=https://www.506064.com/zh-hk/spacehome/f08e84c43f class=profile-name><span class=author-name>小藍</span></a><p class=author-description>這個人很懶,什麼都沒有留下~</p><div class=profile-stats><div class=profile-stats-inner><div class=user-stats-item> <b>75.5K</b> <span>文章</span></div><div class=user-stats-item> <b>0</b> <span>評論</span></div><div class=user-stats-item> <b>0</b> <span>粉絲</span></div></div></div> <button type=button class="wpcom-btn btn-xs btn-follow j-follow btn-primary" data-user=22595><i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-add></use></svg></i>關注</button><button type=button class="wpcom-btn btn-primary btn-xs btn-message j-message" data-user=22595><i class="wpcom-icon wi"><svg aria-hidden=true><use xlink:href=#wi-mail-fill></use></svg></i>私信</button></div><div class=profile-posts><h3 class="widget-title"><span>最近文章</span></h3><ul> <li><a href=https://www.506064.com/zh-hk/n/313016.html title=探究request.session()>探究request.session()</a></li> <li><a href=https://www.506064.com/zh-hk/n/313015.html title=深入淺出JS解構賦值>深入淺出JS解構賦值</a></li> <li><a href=https://www.506064.com/zh-hk/n/313014.html title=Python函數編寫:提高代碼模塊性和重複利用性>Python函數編寫:提高代碼模塊性和重複利用性</a></li> <li><a href=https://www.506064.com/zh-hk/n/313013.html title=javajson聚合(java組合和聚合)>javajson聚合(java組合和聚合)</a></li> <li><a href=https://www.506064.com/zh-hk/n/313012.html title=mysql數據庫中間表如何設計,mysql數據庫表的設計>mysql數據庫中間表如何設計,mysql數據庫表的設計</a></li></ul></div></div><div class="widget widget_wpcc"><h3 class="widget-title"><span>繁體</span></h3><div id=wpcc_widget_inner> <span id=wpcc_original_link class=wpcc_lang ><a class=wpcc_link href=https://www.506064.com/n/251716.html title=不轉換>不轉換</a></span> <span id=wpcc_zh-hant_link class=wpcc_lang ><a class=wpcc_link rel=nofollow href=https://www.506064.com/zh-hant/n/251716.html title=繁體中文 >繁體中文</a></span> <span id=wpcc_zh-hk_link class=wpcc_current_lang ><a class=wpcc_link rel=nofollow href=https://www.506064.com/zh-hk/n/251716.html title=港澳繁體 >港澳繁體</a></span> <span id=wpcc_zh-tw_link class=wpcc_lang ><a class=wpcc_link rel=nofollow href=https://www.506064.com/zh-tw/n/251716.html title=台灣正體 >台灣正體</a></span></div></div><div class="widget widget-area widget-ez_toc_sticky"><div id=ez-toc-widget-sticky-container class="ez-toc-widget-sticky-container ez-toc-widget-sticky-container-ez_toc_widget_sticky-2 ez-toc-widget-sticky-v2_0_73 ez-toc-widget-sticky counter-hierarchy ez-toc-widget-sticky-container ez-toc-widget-sticky-direction"><h3 class="widget-title"><span> <span class=ez-toc-widget-sticky-title-container><style>#ez_toc_widget_sticky-2 .ez-toc-widget-sticky-title , .ez-toc-widget-sticky-container-ez_toc_widget_sticky-2 .ez-toc-widget-sticky-title { font-size: 120%; font-weight: 500; color: #000; } #ez_toc_widget_sticky-2 .ez-toc-widget-sticky-list li a , .ez-toc-widget-sticky-container-ez_toc_widget_sticky-2 .ez-toc-widget-sticky-list li a{ ; ; ; } #ez_toc_widget_sticky-2 .ez-toc-widget-sticky-container ul.ez-toc-widget-sticky-list li.active , .ez-toc-widget-sticky-container-ez_toc_widget_sticky-2 ul.ez-toc-widget-sticky-list li.active{ background-color: #ededed; }</style><span class=ez-toc-widget-sticky-title-toggle><span class="ez-toc-widget-sticky-title ez-toc-toggle" style="cursor: pointer">文章目錄</span><a href=# class="ez-toc-widget-sticky-pull-right ez-toc-widget-sticky-btn ez-toc-widget-sticky-btn-xs ez-toc-widget-sticky-btn-default ez-toc-widget-sticky-toggle" aria-label="Widget Easy TOC toggle icon"><span style="border: 0;padding: 0;margin: 0;position: absolute !important;height: 1px;width: 1px;overflow: hidden;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);clip-path: inset(50%);white-space: nowrap;">Toggle Table of Content</span><span class><span class=eztoc-hide style=display:none;>Toggle</span><span class=ez-toc-icon-toggle-span><svg style="fill: #999;color:#999" xmlns=http://www.w3.org/2000/svg class=list-377408 width=20px height=20px viewBox="0 0 24 24" fill=none><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill=currentColor></path></svg><svg style="fill: #999;color:#999" class=arrow-unsorted-368013 xmlns=http://www.w3.org/2000/svg width=10px height=10px viewBox="0 0 24 24" version=1.2 baseProfile=tiny><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></a></span> </span></span></h3><nav><ul class='ez-toc-widget-sticky-list ez-toc-widget-sticky-list-level-1 ' ><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-3'><a class="ez-toc-link ez-toc-heading-1" href=#25E425B8258025E325802581Makefile25E7259A258425E5259F25BA25E6259C25AC25E7259F25A525E825AF2586 title=一、Makefile的基本知識>一、Makefile的基本知識</a></li><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-3'><a class="ez-toc-link ez-toc-heading-2" href=#25E425BA258C25E325802581openwrtmakefile25E7259A258425E5259F25BA25E6259C25AC25E725BB259325E6259E2584 title=二、openwrtmakefile的基本結構>二、openwrtmakefile的基本結構</a></li><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href=#25E425B8258925E325802581openwrtmakefile25E425B825AD25E525B825B825E7259425A825E7259A258425E52586258525E525AE25B9 title=三、openwrtmakefile中常用的內容>三、openwrtmakefile中常用的內容</a><ul class=ez-toc-widget-sticky-list-level-4 ><li class=ez-toc-widget-sticky-heading-level-4><a class="ez-toc-link ez-toc-heading-4" href=#1_25E525AE259A25E425B9258925E825BD25AF25E425BB25B625E5258C258525E425BF25A125E6258125AF title="1. 定義軟件包信息">1. 定義軟件包信息</a></li><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-4'><a class="ez-toc-link ez-toc-heading-5" href=#2_25E525AE259A25E425B9258925E825BD25AF25E425BB25B625E5258C258525E7259A258425E725BC259625E825AF259125E32580258125E525AE258925E825A3258525E32580258125E5258825A025E9259925A425E725AD258925E9259825B625E625AE25B525E62593258D25E425BD259C title="2. 定義軟件包的編譯、安裝、刪除等階段操作">2. 定義軟件包的編譯、安裝、刪除等階段操作</a></li><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-4'><a class="ez-toc-link ez-toc-heading-6" href=#3_25E525AE259A25E425B9258925E825BD25AF25E425BB25B625E5258C258525E7259A258425E625BA259025E425BB25A325E725A0258125E425BF25A125E6258125AF25E52592258C25E425B8258B25E825BD25BD25E5259C25B025E5259D2580 title="3. 定義軟件包的源代碼信息和下載地址">3. 定義軟件包的源代碼信息和下載地址</a></li><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-4'><a class="ez-toc-link ez-toc-heading-7" href=#4_25E525AE259A25E425B9258925E825BD25AF25E425BB25B625E5258C258525E7259A258425E62596258725E425BB25B625E525AE258925E825A3258525E7259B25AE25E525BD2595 title="4. 定義軟件包的文件安裝目錄">4. 定義軟件包的文件安裝目錄</a></li></ul></li><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href=#25E5259B259B25E325802581openwrtmakefile25E7259A258425E525AE259E25E92599258525E525BA259425E7259425A8 title=四、openwrtmakefile的實際應用>四、openwrtmakefile的實際應用</a><ul class=ez-toc-widget-sticky-list-level-4 ><li class=ez-toc-widget-sticky-heading-level-4><a class="ez-toc-link ez-toc-heading-9" href=#1_25E92585258D25E725BD25AE25E62596258725E425BB25B625E7259A258425E72594259F25E625882590 title="1. 配置文件的生成">1. 配置文件的生成</a></li><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-4'><a class="ez-toc-link ez-toc-heading-10" href=#2_25E525AE258925E825A3258525E82584259A25E6259C25AC25E7259A258425E72594259F25E625882590 title="2. 安裝腳本的生成">2. 安裝腳本的生成</a></li><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-4'><a class="ez-toc-link ez-toc-heading-11" href=#3_25E92599258425E5258A25A025E5259125BD25E425BB25A425E7259A258425E72594259F25E625882590 title="3. 附加命令的生成">3. 附加命令的生成</a></li></ul></li><li class='ez-toc-widget-sticky-page-1 ez-toc-widget-sticky-heading-level-3'><a class="ez-toc-link ez-toc-heading-12" href=#25E425BA259425E32580258125E6258025BB25E725BB2593 title=五、總結>五、總結</a></li></ul></nav></div></div><div class="widget widget_lastest_products"><h3 class="widget-title"><span>可能喜歡</span></h3><ul class=p-list> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/6993.html> <img width=480 height=300 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt=「百度快速抓取2024年最新申請方法」使用說明與權益獲取 decoding=async data-original=/wp-content/uploads/2024/04/070111713518646-480x300.png> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/6993.html title=「百度快速抓取2024年最新申請方法」使用說明與權益獲取> 「百度快速抓取2024年最新申請方法」使用說明與權益獲取 </a></h4></div> </li> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/125936.html> <img width=700 height=394 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt=在Steam上體驗《黑神話悟空》的最經濟便宜購買途徑 decoding=async data-original=/wp-content/uploads/2024/09/image.png> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/125936.html title=在Steam上體驗《黑神話悟空》的最經濟便宜購買途徑> 在Steam上體驗《黑神話悟空》的最經濟便宜購買途徑 </a></h4></div> </li> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/151811.html> <img width=700 height=372 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt="4核8G雲服務器適合裝寶塔MySQL 那個版本" decoding=async data-original=/wp-content/uploads/2024/11/mysql.jpg> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/151811.html title="4核8G雲服務器適合裝寶塔MySQL 那個版本"> 4核8G雲服務器適合裝寶塔MySQL 那個版本 </a></h4></div> </li> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/212.html> <img width=900 height=383 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt=0基礎入門實戰深度學習Pytorch decoding=async data-original=/wp-content/uploads/2024/03/Pytorch.png> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/212.html title=0基礎入門實戰深度學習Pytorch> 0基礎入門實戰深度學習Pytorch </a></h4></div> </li> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/7202.html> <img width=800 height=425 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt="一款去中心化的 YouTube 彈幕插件" decoding=async data-original=/wp-content/uploads/2024/05/danmakustr.png> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/7202.html title="一款去中心化的 YouTube 彈幕插件"> 一款去中心化的 YouTube 彈幕插件 </a></h4></div> </li> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/2544.html> <img width=480 height=300 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt=哪個文件是剪映字幕文件? decoding=async data-original=/wp-content/uploads/2024/03/jy_which_file-480x300.jpg> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/2544.html title=哪個文件是剪映字幕文件?> 哪個文件是剪映字幕文件? </a></h4></div> </li> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/143381.html> <img width=480 height=300 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt="提升敲命令體驗的 Raycast 插件:快命令" decoding=async data-original=/wp-content/uploads/2024/10/97d9ad6abf3fb4da-480x300.jpg> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/143381.html title="提升敲命令體驗的 Raycast 插件:快命令"> 提升敲命令體驗的 Raycast 插件:快命令 </a></h4></div> </li> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/217.html> <img width=905 height=423 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt=Epic免費領遊戲:荒野的召喚:垂釣者+無敵少俠:原子伊芙 decoding=async data-original=/wp-content/uploads/2024/03/Epic.png> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/217.html title=Epic免費領遊戲:荒野的召喚:垂釣者+無敵少俠:原子伊芙> Epic免費領遊戲:荒野的召喚:垂釣者+無敵少俠:原子伊芙 </a></h4></div> </li> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/162518.html> <img width=1010 height=981 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt=可靈AI悄然上線獨立APP! decoding=async data-original=/wp-content/uploads/2024/11/image-24.png> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/162518.html title=可靈AI悄然上線獨立APP!> 可靈AI悄然上線獨立APP! </a></h4></div> </li> <li class="col-xs-24 col-md-12 p-item"><div class=p-item-wrap> <a class=thumb href=https://www.506064.com/zh-hk/n/7001.html> <img width=600 height=210 src=https://www.506064.com/wp-content/themes/justnews/themer/assets/images/lazy.png class="attachment-default size-default wp-post-image j-lazy" alt=百度站長平台「快速收錄」4月26日下線 decoding=async data-original=/wp-content/uploads/2024/04/019781617003186.jpg> </a><h4 class="title"> <a href=https://www.506064.com/zh-hk/n/7001.html title=百度站長平台「快速收錄」4月26日下線> 百度站長平台「快速收錄」4月26日下線 </a></h4></div> </li></ul></div></aside></div></div><footer class=footer><div class=container><div class="footer-col-wrap footer-with-none"><div class="footer-col footer-col-copy"><ul class="footer-nav hidden-xs"><li id=menu-item-2539 class="menu-item menu-item-2539"><a href=/tools/base64/ >Base64編碼解碼</a></li> <li id=menu-item-2550 class="menu-item menu-item-2550"><a href=/tools/jianying/ >剪映字幕導出工具</a></li> <li id=menu-item-2551 class="menu-item menu-item-2551"><a href=/tools/jianying/srtdr.html>導入剪映字幕工具</a></li></ul><div class=copyright><p>Copyright © 2024 簡單一點 版權所有 <a href=https://beian.miit.gov.cn target=_blank rel="nofollow noopener">滇ICP備2024022404號-1</a> Powered by 506064.Com</p></div></div></div></div></footer><div class="action action-style-0 action-color-0 action-pos-0" style=bottom:20%;><div class="action-item j-share"> <i class="wpcom-icon wi action-item-icon"><svg aria-hidden=true><use xlink:href=#wi-share></use></svg></i></div><div class="action-item gotop j-top"> <i class="wpcom-icon wi action-item-icon"><svg aria-hidden=true><use xlink:href=#wi-arrow-up-2></use></svg></i></div></div> <script type=speculationrules>{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/justnews\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script> <link rel=stylesheet href=https://www.506064.com/wp-content/cache/minify/b8217.css media=all><style id=ez-toc-widget-sticky-inline-css>.ez-toc-widget-sticky-direction {direction: ltr;}.ez-toc-widget-sticky-container ul{counter-reset: item ;}.ez-toc-widget-sticky-container nav ul li a::before {content: counters(item, '.', decimal) '. ';display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }</style> <script id=main-js-extra>/*<![CDATA[*/var _wpcom_js = {"webp":"?x-oss-process=image\/format,webp","ajaxurl":"https:\/\/www.506064.com\/wp-admin\/admin-ajax.php","theme_url":"https:\/\/www.506064.com\/wp-content\/themes\/justnews","slide_speed":"5000","is_admin":"0","lang":"zh_CN","js_lang":{"share_to":"\u5206\u4eab\u5230:","copy_done":"\u590d\u5236\u6210\u529f\uff01","copy_fail":"\u6d4f\u89c8\u5668\u6682\u4e0d\u652f\u6301\u62f7\u8d1d\u529f\u80fd","confirm":"\u786e\u5b9a","qrcode":"\u4e8c\u7ef4\u7801","page_loaded":"\u5df2\u7ecf\u5230\u5e95\u4e86","no_content":"\u6682\u65e0\u5185\u5bb9","load_failed":"\u52a0\u8f7d\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff01","expand_more":"\u9605\u8bfb\u5269\u4f59 %s"},"share":"1","share_items":{"weibo":{"title":"\u5fae\u535a","icon":"weibo"},"wechat":{"title":"\u5fae\u4fe1","icon":"wechat"},"qzone":{"title":"QQ\u7a7a\u95f4","icon":"qzone"},"qq":{"title":"QQ\u597d\u53cb","icon":"qq"},"douban":{"name":"douban","title":"\u8c46\u74e3","icon":"douban"}},"lightbox":"1","post_id":"251716","user_card_height":"356","poster":{"notice":"\u8bf7\u300c\u70b9\u51fb\u4e0b\u8f7d\u300d\u6216\u300c\u957f\u6309\u4fdd\u5b58\u56fe\u7247\u300d\u540e\u5206\u4eab\u7ed9\u66f4\u591a\u597d\u53cb","generating":"\u6b63\u5728\u751f\u6210\u6d77\u62a5\u56fe\u7247...","failed":"\u6d77\u62a5\u56fe\u7247\u751f\u6210\u5931\u8d25"},"video_height":"482","fixed_sidebar":"1","dark_style":"0","font_url":"\/wp-content\/uploads\/wpcom\/fonts.f5a8b036905c9579.css","follow_btn":"<i class=\"wpcom-icon wi\"><svg aria-hidden=\"true\"><use xlink:href=\"#wi-add\"><\/use><\/svg><\/i>\u5173\u6ce8","followed_btn":"\u5df2\u5173\u6ce8","user_card":"1"};/*]]>*/</script> <script src=https://www.506064.com/wp-content/cache/minify/cdbcc.js></script> <script id=ez-toc-js-js-extra>/*<![CDATA[*/var ezTOC = {"smooth_scroll":"","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<i class=\"ez-toc-toggle-el\"><\/i>","chamomile_theme_is_on":""};/*]]>*/</script> <script src=https://www.506064.com/wp-content/cache/minify/0c713.js></script> <script id=wpcom-member-js-extra>var _wpmx_js = {"ajaxurl":"https:\/\/www.506064.com\/wp-admin\/admin-ajax.php","plugin_url":"https:\/\/www.506064.com\/wp-content\/plugins\/wpcom-member\/","post_id":"251716","js_lang":{"login_desc":"\u60a8\u8fd8\u672a\u767b\u5f55\uff0c\u8bf7\u767b\u5f55\u540e\u518d\u8fdb\u884c\u76f8\u5173\u64cd\u4f5c\uff01","login_title":"\u8bf7\u767b\u5f55","login_btn":"\u767b\u5f55","reg_btn":"\u6ce8\u518c"},"login_url":"https:\/\/www.506064.com\/zh-hk\/login","register_url":"https:\/\/www.506064.com\/zh-hk\/reg","captcha_label":"\u70b9\u51fb\u8fdb\u884c\u4eba\u673a\u9a8c\u8bc1","captcha_verified":"\u9a8c\u8bc1\u6210\u529f","errors":{"require":"\u4e0d\u80fd\u4e3a\u7a7a","email":"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u7535\u5b50\u90ae\u7bb1","pls_enter":"\u8bf7\u8f93\u5165","password":"\u5bc6\u7801\u5fc5\u987b\u4e3a6~32\u4e2a\u5b57\u7b26","passcheck":"\u4e24\u6b21\u5bc6\u7801\u8f93\u5165\u4e0d\u4e00\u81f4","phone":"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7\u7801","terms":"\u8bf7\u9605\u8bfb\u5e76\u540c\u610f\u6761\u6b3e","sms_code":"\u9a8c\u8bc1\u7801\u9519\u8bef","captcha_verify":"\u8bf7\u70b9\u51fb\u6309\u94ae\u8fdb\u884c\u9a8c\u8bc1","captcha_fail":"\u4eba\u673a\u9a8c\u8bc1\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5","nonce":"\u968f\u673a\u6570\u6821\u9a8c\u5931\u8d25","req_error":"\u8bf7\u6c42\u5931\u8d25"}};</script> <script src=https://www.506064.com/wp-content/cache/minify/e6954.js></script> <script id=QAPress-js-js-extra>var QAPress_js = {"ajaxurl":"https:\/\/www.506064.com\/wp-admin\/admin-ajax.php","ajaxloading":"https:\/\/www.506064.com\/wp-content\/plugins\/qapress\/images\/loading.gif","max_upload_size":"2097152","compress_img_size":"1920","lang":{"delete":"\u5220\u9664","nocomment":"\u6682\u65e0\u56de\u590d","nocomment2":"\u6682\u65e0\u8bc4\u8bba","addcomment":"\u6211\u6765\u56de\u590d","submit":"\u53d1\u5e03","loading":"\u6b63\u5728\u52a0\u8f7d...","error1":"\u53c2\u6570\u9519\u8bef\uff0c\u8bf7\u91cd\u8bd5","error2":"\u8bf7\u6c42\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff01","confirm":"\u5220\u9664\u64cd\u4f5c\u65e0\u6cd5\u6062\u590d\uff0c\u5e76\u5c06\u540c\u65f6\u5220\u9664\u5f53\u524d\u56de\u590d\u7684\u8bc4\u8bba\u4fe1\u606f\uff0c\u60a8\u786e\u5b9a\u8981\u5220\u9664\u5417\uff1f","confirm2":"\u5220\u9664\u64cd\u4f5c\u65e0\u6cd5\u6062\u590d\uff0c\u60a8\u786e\u5b9a\u8981\u5220\u9664\u5417\uff1f","confirm3":"\u5220\u9664\u64cd\u4f5c\u65e0\u6cd5\u6062\u590d\uff0c\u5e76\u5c06\u540c\u65f6\u5220\u9664\u5f53\u524d\u95ee\u9898\u7684\u56de\u590d\u8bc4\u8bba\u4fe1\u606f\uff0c\u60a8\u786e\u5b9a\u8981\u5220\u9664\u5417\uff1f","deleting":"\u6b63\u5728\u5220\u9664...","success":"\u64cd\u4f5c\u6210\u529f\uff01","denied":"\u65e0\u64cd\u4f5c\u6743\u9650\uff01","error3":"\u64cd\u4f5c\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff01","empty":"\u5185\u5bb9\u4e0d\u80fd\u4e3a\u7a7a","submitting":"\u6b63\u5728\u63d0\u4ea4...","success2":"\u63d0\u4ea4\u6210\u529f\uff01","ncomment":"0\u6761\u8bc4\u8bba","login":"\u62b1\u6b49\uff0c\u60a8\u9700\u8981\u767b\u5f55\u624d\u80fd\u8fdb\u884c\u56de\u590d","error4":"\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff01","need_title":"\u8bf7\u8f93\u5165\u6807\u9898","need_cat":"\u8bf7\u9009\u62e9\u5206\u7c7b","need_content":"\u8bf7\u8f93\u5165\u5185\u5bb9","success3":"\u66f4\u65b0\u6210\u529f\uff01","success4":"\u53d1\u5e03\u6210\u529f\uff01","need_all":"\u6807\u9898\u3001\u5206\u7c7b\u548c\u5185\u5bb9\u4e0d\u80fd\u4e3a\u7a7a","length":"\u5185\u5bb9\u957f\u5ea6\u4e0d\u80fd\u5c11\u4e8e10\u4e2a\u5b57\u7b26","load_done":"\u56de\u590d\u5df2\u7ecf\u5168\u90e8\u52a0\u8f7d","load_fail":"\u52a0\u8f7d\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff01","load_more":"\u70b9\u51fb\u52a0\u8f7d\u66f4\u591a","approve":"\u786e\u5b9a\u8981\u5c06\u5f53\u524d\u95ee\u9898\u8bbe\u7f6e\u4e3a\u5ba1\u6838\u901a\u8fc7\u5417\uff1f","end":"\u5df2\u7ecf\u5230\u5e95\u4e86","upload_fail":"\u56fe\u7247\u4e0a\u4f20\u51fa\u9519\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff01","file_types":"\u4ec5\u652f\u6301\u4e0a\u4f20jpg\u3001png\u3001gif\u683c\u5f0f\u7684\u56fe\u7247\u6587\u4ef6","file_size":"\u56fe\u7247\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc72M","uploading":"\u6b63\u5728\u4e0a\u4f20...","upload":"\u63d2\u5165\u56fe\u7247"}};</script> <script src=https://www.506064.com/wp-content/cache/minify/b0fe6.js></script> <script id=ez-toc-widget-stickyjs-js-extra>var ezTocWidgetSticky = {"appearance_options":"","advanced_options":"","scroll_fixed_position":"30","sidebar_sticky_title_size":"120","sidebar_sticky_title_size_unit":"%","sidebar_sticky_title_weight":"500","sidebar_sticky_title_color":"#000","sidebar_sticky_item_size":"100","sidebar_sticky_item_size_unit":"%","sidebar_sticky_item_weight":"500","sidebar_sticky_item_color":"#000","sidebar_width":"auto","sidebar_width_size_unit":"none","fixed_top_position":"30","fixed_top_position_size_unit":"px","navigation_scroll_bar":"on","scroll_max_height":"auto","scroll_max_height_size_unit":"none","heading_label_tag":"default"};</script> <script src=https://www.506064.com/wp-content/cache/minify/11e9f.js></script> <script>var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?a1035e645fa12dd822cf6198c251657a"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();</script> <script type=application/ld+json>{ "@context": "https://schema.org", "@type": "Article", "@id": "https://www.506064.com/zh-hk/n/251716.html", "url": "https://www.506064.com/zh-hk/n/251716.html", "headline": "openwrtmakefile的使用與管理", "description": "一、Makefile的基本知識 Makefile是一種可以執行程序自動化編譯的工具,它通過對文件和源代碼的依賴性關係來確定需要重新編譯的文件,從而提高了編譯和構建的效率。 Make…", "datePublished": "2024-12-13T17:32:26+08:00", "dateModified": "2024-12-13T17:32:26+08:00", "author": {"@type":"Person","name":"小藍","url":"https://www.506064.com/zh-hk/spacehome/f08e84c43f","image":"/wp-content/uploads/2024/11/none.jpg"} }</script> </body></html>