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