Boost Arm 交叉編譯

Boost Arm 交叉編譯

1. 源碼下載

下載地址:https://sourceforge.net/projects/boost/files/boost/
這里下載 1.74.0 版本
在這里插入圖片描述
然后解壓。

2. 配置

有些庫我們是不需要的,所以就不需要編譯,可以通過 -show-libraries 查看庫列表

vincent@msi-creator-15:~/Temp/arm/boost_1_74_0$ 
---? ./bootstrap.sh --show-libraries
Building Boost.Build engine with toolset gcc... tools/build/src/engine/b2The following Boost libraries have portions that require a separate build
and installation step. Any library not listed here can be used by including
the headers only.The Boost libraries requiring separate building and installation are:- atomic- chrono- container- context- contract- coroutine- date_time- exception- fiber- filesystem- graph- graph_parallel- headers- iostreams- locale- log- math- mpi- nowide- program_options- python- random- regex- serialization- stacktrace- system- test- thread- timer- type_erasure- wave

通過 -without-libraries=, , , 逗號隔開去掉不想編譯的庫,并指定安裝位置:

./bootstrap.sh --without-libraries=atomic,chrono --prifix=./install

這里還是全部編譯了,所以直接執行下面命令

./bootstrap.sh --prefix=./install

執行后結果

vincent@msi-creator-15:~/Temp/arm/boost_1_74_0$ 
---? ./bootstrap.sh --prefix=./install
Building Boost.Build engine with toolset gcc... tools/build/src/engine/b2
Detecting Python version... 3.9
Detecting Python root... /home/vincent/anaconda3
Unicode/ICU support for Boost.Regex?... /usr
Generating Boost.Build configuration in project-config.jam for gcc...Bootstrapping is done. To build, run:./b2To generate header files, run:./b2 headersTo adjust configuration, edit 'project-config.jam'.
Further information:- Command line help:./b2 --help- Getting started guide: http://www.boost.org/more/getting_started/unix-variants.html- Boost.Build documentation:http://www.boost.org/build/

3. 修改配置

上一步將會生成主要的2個文件:

  1. b2
  2. project-config.jam

3.1 修改編譯器

打開 project-config.jam 文件修改內的編譯器
在這里插入圖片描述
將此句修改為交叉編譯器路徑

using gcc : : /xxx/gcc-arm-11.2-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc ;

這里語法很苛刻,需要注意下面圖內標注的地方都是需要有空格的。
在這里插入圖片描述

3.2 修改安裝目錄

在這里插入圖片描述
這里同樣要注意空格。

3.3 其他配置

  1. 選項

    • build-type 構建類型,默認是 minimal ,此外還有 complete 選項。minimal 在Linux下只編譯 release版本的多線程靜態庫和動態庫。而 complete 在 unix/linux 下將會編譯多個版本,即 debug 或 release,多線程或單線程,靜態庫或動態庫。一般不建議全部編譯,費時還費空間,提倡按需編譯。

    • build-dir 構建目錄,不指定將會在源碼目錄構建。

    • layout 確定是否選擇庫名和頭文件位置,以便Boost的多個版本或多個編譯器可以在同一個系統上使用。有以下3個選項配置。

      • versioned 二進制文件的名稱包含版本號、編譯器名稱和版本以及編碼的構建屬性。頭文件將會安裝在 HDRDIR 的子目錄中,其名稱包含boost的版本號。
      • tagged 二進制文件的名稱包含編碼的構建屬性,但不包含編譯器名稱和版本或boost版本。如果使用同一個編譯器構建多個boost,推薦使用。
      • system 二進制文件名稱不包含boost版本號或編譯器的名稱和版本號,boost頭文件直接安裝到 HDRDIR 目錄中。

      windows 默認是選擇 versioned,unix默認選擇system。當 build-type 為 complete時,variant=debug,release屬性時,必須要確保 layout=versioned或tagged。

    • without 設置排除編譯的庫。

  2. 屬性

    • variant = debug|release,編譯庫的模式,支持同時編譯。

    • link = static|shared,編譯靜態庫還是動態庫。

    • runtime-link =static|shared,指創建的庫是靜態鏈接還是動態鏈接到C運行庫(或C++標準庫),這個屬性需要依據 link 的類型,不同的編譯器允許的鏈接策略不一樣,比如在 GCC 下,在生成動態庫(-link=shared)時,就不允許進行靜態鏈接到C運行庫(或C++標準庫)

      這里重點強調一下,當link為static時,runtime-link可以是shared,boost本身依賴的C/C++底層庫就是動態鏈接的,但是對于boost而言是靜態鏈接,好比A程序依賴boost,A與boost是靜態鏈接,但是boost與C/C++運行庫是動態的。

    • threading = single|multi,創建多線程還是單線程的版本。

    屬性是支持同時設置的,比如:

    variant=debug,release
    # 或
    variant=debug variant=release
    

配置的命令示例如下:

./b2 --layout=tagged-sHAVE_ICU=1variant=debug,release link=static runtime-link=shared threading=multi

sHAVE_ICU=1 代表支持 Unicode/ICU。

4. 編譯

執行下面命令開始編譯

./b2

編譯成功后如下提示:
在這里插入圖片描述

5. 安裝

編程完成的靜態或動態庫文件就在stage目錄中。

vincent@msi-creator-15:~/Temp/arm/boost_1_74_0$ 
---? tree -L 1 stage
stage
└── lib

但是缺少頭文件,執行下面的命令進行安裝,頭文件和庫將會拷貝到源碼目錄下的 install 目錄中。

./b2 install

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535952.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535952.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

為什么Linux會開機黑屏?

有的童鞋由于工作的需要,或者想體驗一把無廣告的世界,會去嘗試使用Linux的發行版,但是經常被Linux拒之門外,甚至連系統到裝不上,當然這個現象也在越來越少,只有更多的人去使用它,它才會變的更好…

Golang跨平臺UI框架之Wails(一)

Golang作為后端、腳手架、API服務等很常見,但Go不僅僅局限于此,它的目標是星辰大海!本系列文章就開始講解如何使用Go來構建現代化的桌面級程序。 1. 初識Wails Wails 是一個框架,可使用 Go 和 Web 技術編寫桌面應用程序。我們先來欣賞一下美圖: Go官方是不支持寫帶有GUI…

Linux安裝NVIDIA顯卡驅動的正確姿勢

文章目錄Linux安裝NVIDIA顯卡驅動的正確姿勢什么是nouveau驅動?檢測NVIDIA驅動是否成功安裝集顯與獨顯的切換使用標準倉庫進行自動化安裝使用**PPA**倉庫進行自動化安裝使用官方的NVIDIA驅動進行手動安裝常見問題解決Linux安裝NVIDIA顯卡驅動的正確姿勢 可能想玩Li…

Linux安裝CUDA的正確姿勢

Linux安裝CUDA的正確姿勢 CUDA(Compute Unified Device Architecture,統一計算架構)是由NVIDIA所推出的一種集成技術,是該公司對于GPGPU的正式名稱。 透過這個技術,用戶可利用NVIDIA的GeForce 8以后的GPU和較新的Qua…

Linux升級內核的正確姿勢

Linux升級內核的正確姿勢 很多童鞋在玩耍linux發行版的時候,都會遇到各種各樣的問題,比如:網卡不能使用,亮度不能調節,觸摸板不能識別,藍牙不能使用等等,這些關系都和linux的內核有關系。 什么…

Ubuntu 18.04安裝NVIDIA(英偉達) RTX2080Ti顯卡

Ubuntu 18.04安裝NVIDIA(英偉達) RTX2080Ti顯卡 在安裝顯卡之前請先把ubuntu 18.04系統提前安裝好。 需要準備的資料: NVIDIA 驅動 下載驅動 驅動的下載地址,在此下載頁面選擇合適的顯卡,目前最新的顯卡驅動版本是…

Ubuntu18.04安裝cuDNN和Tensorflow的正確姿勢

文章目錄Ubuntu18.04安裝cuDNN和Tensorflow的正確姿勢一、檢查NVIDIA驅動是否安裝成功二、檢查CUDA是否安裝成功三、安裝cuDNN1. 確定版本2. 下載安裝包3. 解壓安裝4. 安裝libcupti四、安裝Tensorflow1. 確定版本2. 安裝pip3. 安裝Tensorflow4. 檢查是否正常運行五、錯誤解決1.…

HttpServletResponse應用 的 簡單介紹

HttpServletResponse是專門用于HTTP協議的ServletResponse接口,它用于封裝HTTP響應消息,允許操控HTTP協議相關數據,包括響應頭和狀態碼,支持Cookies和session跟蹤,HttpServletResponse也定義了一系列用于描述各種HTTP狀…

移動站應該嘗試百度MIP的五個原因

MIP 是什么?MIP 是百度在 2016 年提出的移動網頁加速器項目。 MIP 能做什么?MIP 能幫助站長和網站開發者快速搭建移動端頁面。 MIP 怎么加速?MIP 從前端渲染和頁面網絡傳輸兩方面進行優化,杜絕頁面渲染中的阻塞問題,…

Vim從理解到應用

1991 年,來自荷蘭的一名工程師 Bram Moolenaar 為了在他的Amiga計算機上復制Vi的功能,正式發布 了Vim的第一個版本。在當時無論誰也沒想到,這款軟件未來能在技術圈爆發出那么大的威力,為千千萬萬的工程師節省了無數時間&#xff0…

如何用百度MIP快速搭建體驗友好的移動頁面

在讀這篇文章之前,請確定你已經了解 MIP 定義及加速原理。如果不確定的話,可以到 MIP 官網了解。 改造前期準備和注意事項: 你可以選擇直接將原先的移動站點直接改成 MIP 站,也可以單獨再做一套 MIP 站點與移動站并存。 復雜的頁面暫不建議…

JAVA知識基礎(一):數據類型

在我們學習一門編程語言時,最先要了解的就是數據類型,而數據類型又都是抽象的概念,初學者理解起來比較困難,所以我們往往是先應用再理解,但是在本篇文章我決定用先理解再應用的方式嘗試一下,試試效果。 1、…

百度MIP移動頁面加速——不只是CDN

MIP 是用 CDN 做加速的么?準確答案是:是,但不只是。 MIP 全稱 Mobile Instant Pages,移動網頁加速器,是百度提出的頁面加速解決方案。MIP 從前端渲染和頁面網絡傳輸兩方面進行優化,杜絕頁面渲染中的阻塞問…

JAVA知識基礎(二):基本語法

本篇主要介紹JAVA的運算符、循環結構以及條件結構。 1、JAVA運算符 計算機的最基本用途之一就是執行數學運算,作為一門計算機語言的Java也提供了一套豐富的運算符來操縱變量。 JAVA運算符可以大致概括為幾類:算術運算符、關系運算符、位運算符、邏輯運…

JAVA知識基礎(三):修飾符

JAVA中根據修飾對象的不同可以分為類修飾符、方法修飾符、變量修飾符三類,其中每種修飾符又可以單獨分成兩類:訪問修飾符和非訪問修飾符。為了便于理解,本文以訪問和非訪問的角度展開。 1、訪問修飾符 訪問修飾符有四個:public、…

百度推出新技術 MIP,網頁加載更快,廣告呢?

MIP 項目在 2016 年年初正式發布,幫助移動頁面加速(原理)。內測數據表明,MIP 頁面在 1s 內加載完成。現在已經有十多家網站加入 MIP 項目,有更多的網站正在加入中。在MIP收到的反饋中,大部分都提到了廣告的…

JAVA知識基礎(四):深入理解static關鍵字

1、static存在的主要意義 static的主要意義是在于創建獨立于具體對象的域變量或者方法。以致于即使沒有創建對象,也能使用屬性和調用方法! static關鍵字還有一個比較關鍵的作用就是 用來形成靜態代碼塊以優化程序性能。static塊可以置于類中的任何地方…

MIP改造常見問題二十問

在MIP推出后,我們收到了很多站長的疑問和顧慮。我們將所有疑問和顧慮歸納為以下二十個問題,希望對大家理解 MIP 有幫助。 1、MIP 化后對其他搜索引擎抓取收錄以及 SEO 的影響如何? 答:在原頁面 MIP 化,不會影響其它搜…

Nginx(零):背景

我們今天開始對Nginx的學習,本來是打算第一篇就是基礎知識介紹的,但是我感覺在學習一個新知識之前總應該知道,我們為什么要學習它,學習它的意義何在吧!所以我加了背景這一篇作為Nginx開始學習的標志。 1、Nginx的誕生…

Nginx(一):概念基礎

上一篇我們介紹了Nginx的背景,現在我們就要開始正式對Nginx的學習了。本篇我們將對Nginx的基本定義進行介紹,了解Nginx到底是什么。然后我們會介紹Nginx最基本的三個概念:反向代理、負載均衡、動靜分離。 1、Nginx是什么 Nginx(“engine x”…