交叉编译Libwebsockets

38 阅读1分钟

下载源码,解压缩。

进入修改CMakeLists.txt

# 加在最前面
# 设置交叉编译 -----------------------------------------------
 # CMAKE_SYSTEM_NAME:指定目标机所在的操作系统名称,只有当该变量被设置了,CMake才认为此时正值交叉编译
 # CMAKE_FIND_ROOT_PATH:代表一系列的相关文件夹路径的根路径的变更,所有的Find_***.cmake脚本首先会在这个路径的usr/lib,lib目录下找,然后才会去系统的目录下找可以指定多个路径
 # CMAKE_FIND_ROOT_PATH_MODE_PROGRAM:有三种取值:NEVER,ONLY,BOTH  ,这边选NEVER表示不在当前机器的系统目录下查找,而是去宿主机查找
 # CMAKE_FIND_ROOT_PATH_MODE_LIBRARY:选ONLY表示依赖库只在交叉编译环境中找
 # CMAKE_FIND_ROOT_PATH_MODE_INCLUDE:表示依赖的头文件只在交叉编译环境中找
 # CMAKE_C_COMPILER CMAKE_CXX_COMPILE:指定交叉编译链gcc和g++
 SET(CMAKE_SYSTEM_NAME Linux)
 SET(CMAKE_FIND_ROOT_PATH "/opt/linux/x86-arm/arm-v01c02-linux-musleabi-gcc/bin")
 SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
 SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
 SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
 SET(CMAKE_C_COMPILER "/opt/linux/x86-arm/arm-v01c02-linux-musleabi-gcc/bin/arm-v01c02-linux-musleabi-gcc")
 SET(CMAKE_CXX_COMPILE "/opt/linux/x86-arm/arm-v01c02-linux-musleabi-gcc/bin/arm-v01c02-linux-musleabi-g++")
 # ------------------------------------------------------------


cmake_minimum_required(VERSION 3.10...4.0)

............

# 我嫌麻烦,openssl直接关了
set(LWS_OPENSSL_SUPPORT 0)

新建build并进入。

mkdir build
cd build

执行

cmake .. \
    -DCMAKE_INSTALL_PREFIX=/你要/安装/的目录/install \
    -DLWS_WITH_SHARED=OFF \
    -DLWS_LINK_STATIC=ON \
    -DLWS_WITHOUT_TESTAPPS=ON

如果 CMake 配置成功,接下来进行编译和安装:

make -j$(nproc)
make install