1.因为项目需要在板上通过websocket协议配合web服务,需要交叉编译ARM64架构的libwebsockets;

用的是libwebsockets-v4.1.5,openSSL版本openssl-1.0.2u;(由于之前版本不匹配导致交叉编译失败很多次,这个组合保证兼容性)

(1)下载libwebsockets和openSSL正确版本;

(2)优先编译openSSL

#cd进解压目录

cd /openssl-1.0.2u

#配置交叉编译器

./Configure linux-aarch64 --prefix=/home/sun/Desktop/VScode/openssl/path --cross-compile-prefix=/opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

#预编译

make

#安装

make install

(3)编译libwebsockets

#cd 进解压文件夹

cd /libwebsockets-v4.1.5

#建个build

mkdir build

cd build

需要配置cmakelist.txt

# 设置安装目录

SET(CMAKE_INSTALL_PREFIX /home/sun/Desktop/VScode/arm-libwebsockets/path)

# 设置系统名称

SET(CMAKE_SYSTEM_NAME Linux)

# 设置交叉编译工具链的路径

SET(CMAKE_FIND_ROOT_PATH "/opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/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/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc")

SET(CMAKE_CXX_COMPILER "/opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++")

# 指定 OpenSSL 的包含目录和库目录

# 如果需要使用 OpenSSL,请取消注释以下两行并设置正确的路径

SET(LWS_OPENSSL_INCLUDE_DIRS /home/sun/Desktop/VScode/openssl/path/include)

SET(LWS_OPENSSL_LIBRARIES /home/sun/Desktop/VScode/openssl/path/lib)

# 如果不需要 OpenSSL,请使用以下行禁用 OpenSSL

SET(LWS_WITH_SSL ON)

# 如果需要使用内置的 SHA-1 支持,请取消注释以下行

# SET(LWS_WITHOUT_BUILTIN_SHA1 OFF)

如果不需要ssl就改成OFF

复制到cmakelist.txt这里

#

# libwebsockets - small server side websockets and web server implementation

#

# Copyright (C) 2010 - 2020 Andy Green

#

# Permission is hereby granted, free of charge, to any person obtaining a copy

# of this software and associated documentation files (the "Software"), to

# deal in the Software without restriction, including without limitation the

# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or

# sell copies of the Software, and to permit persons to whom the Software is

# furnished to do so, subject to the following conditions:

#

# The above copyright notice and this permission notice shall be included in

# all copies or substantial portions of the Software.

#

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS

# IN THE SOFTWARE.

#

cmake_minimum_required(VERSION 2.8.12)

include(CheckFunctionExists)

include(CheckSymbolExists)

include(CheckIncludeFile)

include(CheckIncludeFiles)

include(CheckLibraryExists)

include(CheckTypeSize)

include(CheckCSourceCompiles)

# 设置安装目录

SET(CMAKE_INSTALL_PREFIX /home/sun/Desktop/VScode/arm-libwebsockets/path)

# 设置系统名称

SET(CMAKE_SYSTEM_NAME Linux)

# 设置交叉编译工具链的路径

SET(CMAKE_FIND_ROOT_PATH "/opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/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/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc")

SET(CMAKE_CXX_COMPILER "/opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++")

# 指定 OpenSSL 的包含目录和库目录

# 如果需要使用 OpenSSL,请取消注释以下两行并设置正确的路径

SET(LWS_OPENSSL_INCLUDE_DIRS /home/sun/Desktop/VScode/openssl/path/include)

SET(LWS_OPENSSL_LIBRARIES /home/sun/Desktop/VScode/openssl/path/lib)

# 如果不需要 OpenSSL,请使用以下行禁用 OpenSSL

SET(LWS_WITH_SSL ON)

# 如果需要使用内置的 SHA-1 支持,请取消注释以下行

# SET(LWS_WITHOUT_BUILTIN_SHA1 OFF)

# 在这里可以添加项目的其他配置和目标声明

if (POLICY CMP0048)

cmake_policy(SET CMP0048 NEW)

endif()

#if (POLICY CMP0024)

# cmake_policy(SET CMP0024 NEW)

#endif()

if (POLICY CMP0075)

cmake_policy(SET CMP0075 NEW)

endif()

# General Advice

#

# For selecting between DEBUG / RELEASE, use -DCMAKE_BUILD_TYPE=DEBUG or =RELEASE

# debug builds include source level debug info and extra logging

set(LWS_WITH_BUNDLED_ZLIB_DEFAULT OFF)

if(WIN32)

set(LWS_WITH_BUNDLED_ZLIB_DEFAULT ON)

(省略.......)

保存cmakelist.txt

#预编译

make

#安装

make install

等待终端运行结束;

不出意外交叉编译就顺利结束了。以上方法亲测可行。

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: