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目录下。

原文地址:https://www.cnblogs.com/eaglexmw/p/15588963.html