• 正文
  • 推荐器件
  • 相关推荐
申请入驻 产业图谱

ELF 1技术贴|如何移植libwebsockets

2024/06/18
1729
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

libwebsockets是一个高性能的开源C语言库,专为实现WebSocket协议及相关的HTTP协议而设计。它不仅使开发者能够在客户端与服务器端轻松构建WebSocket连接,还可以用作标准HTTP服务器。WebSocket是一种在单个TCP连接上进行全双工通信的协议,可以促进浏览器与服务器间实时、互动数据交换的能力,为现代网络应用提供了强大的支持。

libwebsockets在处理如HTTPS和WSS等安全连接时,依赖于OpenSSL提供的强大加密功能来保障数据的安全性。同时,为了提高网络传输效率,libwebsockets还利用ZLib库进行数据压缩。因此,在交叉编译libwebsockets库之前需要先交叉编译OpenSSL和ZLib这两个依赖库。接下来,将跟各位小伙伴详述将这三大库移植至ELF 1开发板的具体步骤。

开发环境操作系统:Ubuntu18.04

交叉编译链:arm-poky-linux-gnueabi-gcc

内核版本:Linux4.1.15

交叉编译OpenSSL
1、下载源码
https://www.openssl.org/source/old/1.1.1/
2、拷贝openssl-1.1.1c.tar.gz到开发环境/home/elf/work目录下解压
elf@ubuntu:~/work$ tar -zxvf openssl-1.1.1c.tar.gz
3、进入openssl-1.1.1c目录,执行./config生成Makefile文件
elf@ubuntu:~/work$ cd openssl-1.1.1c/
elf@ubuntu:~/work/openssl-1.1.1c$ ./config no-asm shared --prefix=/home/elf/work/openssl-1.1.1c/install
4、修改Makefile
第8行修改为:
8 PLATFORM=linux-armv7
第124行修改为:
124 CNF_CFLAGS=-pthread
第125行修改为:
125 CNF_CXXFLAGS=-std=c++11 -pthread
注释掉90-92行、99行、103行、105-106行:
90 #CROSS_COMPILE=
91 #CC=$(CROSS_COMPILE)gcc
92 #CXX=$(CROSS_COMPILE)g++
99 #MAKEDEPEND=$(CROSS_COMPILE)gcc
103 #AR=$(CROSS_COMPILE)ar
105 #RANLIB=$(CROSS_COMPILE)ranlib
106 #RC= $(CROSS_COMPILE)windres
5、设置环境变量
elf@ubuntu:~/work/openssl-1.1.1c$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
6、编译
elf@ubuntu:~/work/openssl-1.1.1c$ make
7、安装
elf@ubuntu:~/work/openssl-1.1.1c$ make install
8、在/home/elf/work/openssl-1.1.1c目录下会生成一个install目录
elf@ubuntu:~/work/openssl-1.1.1c/install$ ls
bin  include  lib  share  ssl
9、将install目录下的文件打包
elf@ubuntu:~/work/openssl-1.1.1c/install$ tar -cvjf openssl.tar.bz2 *
10、拷贝openssl.tar.bz2到ELF 1开发板根目录下解压
root@ELF1:~# cd /
root@ELF1:/# cp run/media/sda1/openssl.tar.bz2 .
root@ELF1:/# tar -xvf openssl.tar.bz2
交叉编译ZLib
1、下载源码
https://zlib.net/
2、将zlib-1.3.1.tar.gz 拷贝到开发环境/home/elf/work目录下解压
elf@ubuntu:~/work$ tar xvf zlib-1.3.1.tar.gz
3、进入zlib源码目录内,创建一个install文件夹用来放置编译出来的文件
elf@ubuntu:~/work$ cd zlib-1.3.1
elf@ubuntu:~/work/zlib-1.3.1$ mkdir install
4、设置环境变量
elf@ubuntu:~/work/zlib-1.3.1$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
5、生成Makefile
elf@ubuntu:~/work/zlib-1.3.1$ ./configure --prefix=$(pwd)/install
6、编译
elf@ubuntu:~/work/zlib-1.3.1$ make
7、安装
elf@ubuntu:~/work/zlib-1.3.1$ make install
8、在install目录下生成文件
elf@ubuntu:~/work/zlib-1.3.1/install$ ls
include  lib  share
9、将install目录下的文件打包
elf@ubuntu:~/work/zlib-1.3.1/install$ tar -cvjf zlib.tar.bz2 *
10、拷贝zlib.tar.bz2到ELF 1开发板根目录下解压
root@ELF1:~# cd /
root@ELF1:/# cp run/media/sda1/zlib.tar.bz2 .
root@ELF1:/# tar -xvf zlib.tar.bz2
交叉编译libwebsockets

1、下载源码
https://github.com/warmcat/libwebsockets
2、将libwebsockets-main.zip拷贝到开发环境/home/elf/work目录下解压
elf@ubuntu:~/work$ unzip libwebsockets-main.zip
3、新建目录
elf@ubuntu:~/work$ cd libwebsockets-main/
elf@ubuntu:~/work/libwebsockets-main$ mkdir build
elf@ubuntu:~/work/libwebsockets-main$ mkdir install
4、修改CMakeLists.txt文件
elf@ubuntu:~/work/libwebsockets-main$ cd build
elf@ubuntu:~/work/libwebsockets-main/build$ vi ../CMakeLists.txt
在第74行project(libwebsockets C)下面添加如下内容
#设置openssl的库头文件
set(OPENSSL_INCLUDE_DIR  "/home/elf/work/openssl-1.1.1c/install/include/")
#设置openssl的库路径
set(OPENSSL_SSL_LIBRARY "/home/elf/work/openssl-1.1.1c/install/lib/libssl.so")
#设置openssl的工具库
set(OPENSSL_CRYPTO_LIBRARY "/home/elf/work/openssl-1.1.1c/install/lib/libcrypto.so")

#设置zlib的库头文件
set(ZLIB_INCLUDE_DIR  "/home/elf/work/zlib-1.3.1/install/include/")
#设置openssl的库路径
set(ZLIB_LIBRARY "/home/elf/work/zlib-1.3.1/install/lib/libz.so")
#设置生成库的安装路径
SET(CMAKE_INSTALL_PREFIX "/home/elf/work/libwebsockets-main/install")
添加效果如下图所示
在第1012行指定libcap库的路径,否则编译报错
1011 if (LWS_HAVE_LIBCAP)
1012         set(LIBCAP_LIBRARIES /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/lib/libcap.so)
1013         list(APPEND LIB_LIST_AT_END ${LIBCAP_LIBRARIES} )
1014 endif()
6、执行环境变量
elf@ubuntu:~/work/libwebsockets-main/build$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
7、生成Makefile
elf@ubuntu:~/work/libwebsockets-main/build$ sudo apt-get update
elf@ubuntu:~/work/libwebsockets-main/build$ sudo apt-get install cmake
elf@ubuntu:~/work/libwebsockets-main/build$ cmake ..
8、编译
elf@ubuntu:~/work/libwebsockets-main/build$ make
9、安装
elf@ubuntu:~/work/libwebsockets-main/build$ make install
10、将install目录下的文件打包
elf@ubuntu:~/work/libwebsockets-main/build$ cd ../install/
elf@ubuntu:~/work/libwebsockets-main/install$ ls
bin  include  lib  share
elf@ubuntu:~/work/libwebsockets-main/install$ tar -cvjf libwebsockets.tar.bz2 *
11、拷贝libwebsockets.tar.bz2到ELF 1开发板根目录下解压
root@ELF1:~# cd /
root@ELF1:/# cp run/media/sda1/libwebsockets.tar.bz2 .
root@ELF1:/# tar -xvf libwebsockets.tar.bz2
至此,OpenSSL、ZLib以及libwebsockets这三个核心库已成功部署至ELF 1开发板,期望这一过程和成果能为正在探索嵌入式系统领域的学习者提供实质性的帮助与启发,助力大家在技术的征途上不断前行。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
Q13FC1350000400 1 Seiko Epson Corporation Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom, CERAMIC, SMD, 2 PIN

ECAD模型

下载ECAD模型
$0.36 查看
HFBR-1523Z 1 Foxconn Transmitter, 0.04Mbps, DIP, Through Hole Mount, ROHS COMPLIANT PACKAGE
$14.15 查看
AT25128B-XHL-T 1 Atmel Corporation EEPROM, 16KX8, Serial, CMOS, PDSO8, 4.40 MM, GREEN, PLASTIC, MO-153AA, TSSOP-8
暂无数据 查看
飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐