libuv的交叉編譯


libuv的交叉編譯

希望在arm linux下研究libuv,首先需要解決libuv的編譯問題,在Linux機器上交叉編譯出libuv來。

1.環境

Host環境:Ubuntu 18.04.5 (PC)

編譯工具鏈:arm-himix200-linux(解包自arm-himix200-linux.tgz,據說來自Hi3516dv300SDK),海思提供的arm編譯工具鏈

環境變量:執行命令:export PATH=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin:$PATH

libuv目標安裝目錄:/data/app

編譯器arm-himix200-linux默認輸出的ELF格式為private flags = 5000200: [Version5 EABI] [soft-float ABI],與ubuntu-armhf的格式private flags = 5000400: [Version5 EABI] [hard-float ABI]不兼容(soft-float ABI與hard-float ABI的傳參規則不一樣,因此會不兼容)。

2.版本

下載鏈接:https://dist.libuv.org/dist/v1.42.0/libuv-v1.42.0.tar.gz

在當前目錄中創建一個cross.cmake文件,內容如下:

set(CMAKE_SYSTEM_NAME Linux)

set(TOOLCHAIN_PATH "/opt/hisi-linux/x86-arm/arm-himix200-linux")
set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/bin/arm-himix200-linux-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/arm-himix200-linux-g++)
SET(CMAKE_FIND_ROOT_PATH "/data/app")

編譯命令如下:

mkdir build && cd build
env PKG_CONFIG_LIBDIR=/data/app/lib/pkgconfig/ CFLAGS="-O2 -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 " cmake -DCMAKE_TOOLCHAIN_FILE=../cross.cmake -DCMAKE_INSTALL_PREFIX=/data/app -DCMAKE_INSTALL_LIBDIR=lib -DLIBUV_BUILD_TESTS=OFF -DLIBUV_BUILD_BENCH=OFF ..
make VERBOSE=1
make DESTDIR=/XXX install

執行命令后,將安裝libuv相應的共享庫、頭文件等至/XXX目錄下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM