libwebsockets是一個高性能的開源C語言庫,專為實現(xiàn)WebSocket協(xié)議及相關(guān)的HTTP協(xié)議而設(shè)計。它不僅使開發(fā)者能夠在客戶端與服務(wù)器端輕松構(gòu)建WebSocket連接,還可以用作標(biāo)準(zhǔn)HTTP服務(wù)器。WebSocket是一種在單個TCP連接上進(jìn)行全雙工通信的協(xié)議,可以促進(jìn)瀏覽器與服務(wù)器間實時、互動數(shù)據(jù)交換的能力,為現(xiàn)代網(wǎng)絡(luò)應(yīng)用提供了強(qiáng)大的支持。
libwebsockets在處理如HTTPS和WSS等安全連接時,依賴于OpenSSL提供的強(qiáng)大加密功能來保障數(shù)據(jù)的安全性。同時,為了提高網(wǎng)絡(luò)傳輸效率,libwebsockets還利用ZLib庫進(jìn)行數(shù)據(jù)壓縮。因此,在交叉編譯libwebsockets庫之前需要先交叉編譯OpenSSL和ZLib這兩個依賴庫。接下來,將跟各位小伙伴詳述將這三大庫移植至ELF 1開發(fā)板的具體步驟。
開發(fā)環(huán)境操作系統(tǒng):Ubuntu18.04
交叉編譯鏈:arm-poky-linux-gnueabi-gcc
內(nèi)核版本:Linux4.1.15
交叉編譯OpenSSL
1、下載源碼https://www.openssl.org/source/old/1.1.1/
2、拷貝openssl-1.1.1c.tar.gz到開發(fā)環(huán)境/home/elf/work目錄下解壓
elf@ubuntu:~/work$ tar -zxvf openssl-1.1.1c.tar.gz
3、進(jìn)入openssl-1.1.1c目錄,執(zhí)行./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、設(shè)置環(huán)境變量
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開發(fā)板根目錄下解壓
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拷貝到開發(fā)環(huán)境/home/elf/work目錄下解壓
elf@ubuntu:~/work$ tar xvf zlib-1.3.1.tar.gz
3、進(jìn)入zlib源碼目錄內(nèi),創(chuàng)建一個install文件夾用來放置編譯出來的文件
elf@ubuntu:~/work$ cd zlib-1.3.1 elf@ubuntu:~/work/zlib-1.3.1$ mkdir install
4、設(shè)置環(huán)境變量
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開發(fā)板根目錄下解壓
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拷貝到開發(fā)環(huán)境/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)下面添加如下內(nèi)容
#設(shè)置openssl的庫頭文件 set(OPENSSL_INCLUDE_DIR "/home/elf/work/openssl-1.1.1c/install/include/") #設(shè)置openssl的庫路徑 set(OPENSSL_SSL_LIBRARY "/home/elf/work/openssl-1.1.1c/install/lib/libssl.so") #設(shè)置openssl的工具庫 set(OPENSSL_CRYPTO_LIBRARY "/home/elf/work/openssl-1.1.1c/install/lib/libcrypto.so") #設(shè)置zlib的庫頭文件 set(ZLIB_INCLUDE_DIR "/home/elf/work/zlib-1.3.1/install/include/") #設(shè)置openssl的庫路徑 set(ZLIB_LIBRARY "/home/elf/work/zlib-1.3.1/install/lib/libz.so") #設(shè)置生成庫的安裝路徑 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、執(zhí)行環(huán)境變量
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開發(fā)板根目錄下解壓
root@ELF1:~# cd / root@ELF1:/# cp run/media/sda1/libwebsockets.tar.bz2 . root@ELF1:/# tar -xvf libwebsockets.tar.bz2
至此,OpenSSL、ZLib以及l(fā)ibwebsockets這三個核心庫已成功部署至ELF 1開發(fā)板,期望這一過程和成果能為正在探索嵌入式系統(tǒng)領(lǐng)域的學(xué)習(xí)者提供實質(zhì)性的幫助與啟發(fā),助力大家在技術(shù)的征途上不斷前行。
-
嵌入式
+關(guān)注
關(guān)注
5059文章
18973瀏覽量
302006 -
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208712 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
4896瀏覽量
97058 -
學(xué)習(xí)開發(fā)板
+關(guān)注
關(guān)注
0文章
10瀏覽量
234
發(fā)布評論請先 登錄
相關(guān)推薦
評論