RPM打包時如何切換編譯器工具鏈-創(chuàng)新互聯

本文目的

近年來,LLVM編譯器項目憑借其良好的架構及友好的license,社區(qū)活躍度增加明顯,成為與GCC項目并列的開源的編譯器巨頭之一。目前一些OS社區(qū)(如openEuler社區(qū))的軟件包仍默認使用GCC工具鏈編譯構建,本篇文章調研在RPM打包時如何切換構建工具鏈。

創(chuàng)新互聯從2013年開始,是專業(yè)互聯網技術服務公司,擁有項目網站建設、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元丹江口做網站,已為上家服務,為丹江口各地企業(yè)和個人服務,聯系電話:13518219792相關概念
  • RPM Package Manager (RPM) 是一個強大的命令行驅動的軟件包管理工具,用來安裝、卸載、校驗、查詢和更新 Linux 系統上的軟件包。
  • YUM:RPM包管理工具,相比RPM工具,YUM可以自動設備軟件包依賴關系,自動安裝相關軟件包。
  • rpmbuild:RPM軟件包打包工具,根據SPEC文件引導創(chuàng)建rpm的二進制軟件包和源碼軟件包。
  • SPEC文件:spec文件中包含了軟件包的諸多信息,如軟件包的名字、版本、類別、說明摘要、創(chuàng)建時要執(zhí)行什么指令、安裝時要執(zhí)行什么操作,以及軟件包所要包含的文件列表等。
  • Clang:LLVM編譯器項目C/C++前端。
實現方案

以名為test的軟件包為例,假設此軟件包默認用GCC構建,則可以通過如下步驟切換成Clang+LLVM。

  1. 在test.spec中,設置clang選項的默認值。
    # Option to enable compiling with clang,default is gcc
    %bcond_with clang
    值得注意的是,bcond_with和bcond_without的意義如下:

    【%bcond_with defaults value to 0】
    【%bcond_without defaults value to 1】

  2. 設置spec文件內部全局變量toolchain。
    %if %{with clang}
    %global toolchain clang
    %endif
    ```
  3. 根據是否打開clang編譯,設置一些相應的動作,如依賴關系。
    %if %{with clang}
    BuildRequires: clang llvm
    %endif
  4. 關鍵的一步,設置編譯器工具鏈。通常情況下,軟件包允許開發(fā)者自定義編譯器工具鏈,如make工具通過CC、CXX等宏設置。
    %if %{with clang}
    %global make_opts HOSTCC=clang CC=clang CXX=clang++
    %endif
  5. 執(zhí)行編譯
    make %{?make_opts}
  6. 軟件包打包時增加–with選項,使能clang構建。
    rpmbuild -ba --with=clang test.spec

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

新聞標題:RPM打包時如何切換編譯器工具鏈-創(chuàng)新互聯
當前URL:http://bm7419.com/article40/hcpho.html

成都網站建設公司_創(chuàng)新互聯,為您提供動態(tài)網站、響應式網站網站建設、網站維護網站內鏈、微信小程序

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

外貿網站制作