arm交叉編譯器編譯boost庫並呼叫(記錄)

2021-06-20 04:42:06 字數 1178 閱讀 6299



環境:ubuntu12.04 arm9 arm-none-linux-gnueabi-g++

安裝:1. 確保arm編譯成功安裝,並配置好環境變數。 

2. 解壓boost壓縮包 

3. 進入目錄執行./bootstrap.sh, 此時形成bjam檔案和project-config.jam 

4. 編輯project-config.jam, 僅修改using gcc這行。因為我使用的是arm-none-linux-gnueabi-g++,所以將其改以下即可: 

using gcc : arm  : arm-none-linux-gnueabi-g++; (注意空格)

5. 執行./bjam 或者 ./bjam stage --layout=tagged --build-type=complete  (好像是後者生成的庫檔案更多)

6. 形成的靜態和動態庫檔案就在stage目錄下.

呼叫:

test.cpp

#include 

#include 

void wait(int seconds)

void thread()

} int main()

編譯命令: arm-none-linux-gnueabi-g++ test.cpp -o test1  -i./ -l./stage/lib -lboost_system -lboost_thread  (當前目錄就是boost的目錄),然後將stage/lib下的檔案放到arm上,確保所在穆培配置到了環境變數中,我放在/usr/lib中。

問題:編譯成功後,將2進製檔案放到arm上執行,會出現inconsistency detected by ld.so: dl-deps.c: 622: _dl_map_object_deps: assertion `nlist > 1' ,這是你的程式呼叫boost庫失敗,你應該把你之前用在linux上交叉編譯的那些庫(可根據需要)放到arm上的/usr/lib下,確保這個目錄配置了環境變數即可

補充:以上只是實現的jing態編譯,所以需要將boost庫移植到arm上,如果使用靜態編譯,則只需要把執行程式放到arm上就可以直接執行。

編譯命令:arm-none-linux-gnueabi-g++ -o test test.cpp -i./ ./stage/lib/libboost_thread.a -lpthread



arm編譯器交叉編譯SDL

本人的編譯器為64位的arm編譯器 aarch64 linux gnu gcc 在配置編譯時注意按個人實際情況配置 編譯器和 host選項!tar vxf sdl2 2.0.14.tar.gz cd sdl2 2.0.14 根據個人實際情況配置!sudo vim etc environment例如,...

boost交叉編譯(arm)

解壓 tar zxvf boost 1 73 0.tar.gz檢視可選庫 cd boost 1 73 0 bootstrap.sh show libraries編譯 bootstrap.sh with libraries filesystem,thread with toolset gcc使用 wi...

ARM交叉編譯器安裝

安裝arm交叉編譯器 zshh shaohua arm arm資料 cd exynos4412 lzy1 zshh zshh shaohua arm arm資料 exynos4412 lzy1 ls cross compile datasheet doc images rootfs schemati...