AARCH64-Linux-gnu交叉编译libwebsockets源码与openSSL

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 <andy@warmcat.com>
#
# 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

等待终端运行结束;

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有灰机诶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值