从0到1玩转MYD-YT113X全志开发板 —— 移植openssl

阿里云教程2周前发布
10 0 0

零、背景

笔者需要在米尔电子(MYIR)的MYD-YT113X(T113-S3)开发板上使用MQTT。首先就需要将MQTT通过交叉编译,移植到板子上。这一步已经完成,参见笔者(系列)文章:

从0到1玩转MYD-YT113X全志开发板 —— 移植MQTT(1)-CSDN博客

但如果要通过C语言代码实现MQTT功能,并在其中使用JSON功能,就需要在开发板上移植cJSON以及openssl,本文就来讲解openssl的详细移植过程。

一、基础工作

笔者鉴于之前移植SQLite3时的教训,不再通过传统一般性步骤:官网下载源码;配置交叉编译工具;编译构建;安装。而是先看开发板上是否已经有了openssl相关可执行文件和库。在开发板的/user/bin以及/usr/lib/下搜索“*ssl*”,结果如下:



root@myd-yt113-s3:~# find /usr/bin/ -name "*ssl*"
root@myd-yt113-s3:~#

具体看一下/usr/bin/下的各文件:



root@myd-yt113-s3:~# ls /usr/bin/
'['                        cx18-ctl                             isotprecv            pon                  timeout
'[['                       dbus-cleanup-sockets                 isotpsend            pr                   tinycap
 adbd                      dbus-daemon                          isotpserver          printf               tinymix
 alsamixer                 dbus-launch                          isotpsniffer         prlimit              tinypcminfo
 amixer                    dbus-monitor                         isotptun             ptx                  tinyplay
 amp_shell                 dbus-run-session                     ivtv-ctl             python               tinyplay_hub
 aplay                     dbus-send                            jacd                 python3              top
 ar                        dbus-test-tool                       jpegdecodedemo       python3.7            tpadc_test
 arecord                   dbus-update-activation-environment   jspy                 python3.7m           tplayerdemo
 asc2log                   dbus-uuidgen                         jsr                  pyvenv               tr
 aserver                   dc                                   killall              rdiff                traceroute
 autplayer_test            deallocvt                            last                 rds-ctl              trecorderdemo
 avahi-browse              decode_tm6000                        lcd_bright_test      readlink             truncate
 avahi-browse-domains      demoVencoder                         ldns-config          realpath             ts
 avahi-publish             diff                                 less                 renice               ts_calibrate
 avahi-publish-address     dircolors                            linux32              reset                ts_conf
 avahi-publish-service     dirname                              linux64              resize               ts_finddev
 avahi-resolve             dos2unix                             locale               rev                  ts_harvest
 avahi-resolve-address     doveadm                              localedef            rpbuf_demo           tsort
 avahi-resolve-host-name   doveconf                             log2asc              rpbuf_test           ts_print
 avahi-set-host-name       dsync                                log2long             rpmsg_demo           ts_print_mt
 awk                       du                                   logger               rpmsg_test           ts_print_raw
 b2sum                     dvb-fe-tool                          logname              rs485_read           ts_test
 backplaydemo              dvb-format-convert                   look                 rs485_write          ts_test_mt
 base32                    dvbv5-daemon                         lscpu                runcon               ts_uinput
 base64                    dvbv5-scan                           lsipc                scp                  ts_verify
 basename                  dvbv5-zap                            lslocks              script               tty
 bc                        dvr_test                             lsns                 scriptreplay         tvd_test_mmap
 bcmserver                 easy_install                         lsof                 seq                  uart_test
 bunzip2                   easy_install-3.7                     lspci                setarch              uart_test_232
 bzcat                     eeprom_test                          lsscsi               setfattr             udevadm
 bzcmp                     eject                                lsusb                setkeycodes          uname26
 bzdiff                    encodertest                          lv_g2d_test          setsid               unexpand
 bzegrep                   env                                  lzcat                setusbconfig         uniq
 bzfgrep                   evtest                               lzma                 sexp-conv            unix2dos
 bzgrep                    expand                               lzopcat              sftp                 unlink
 bzip2                     expr                                 mcookie              sha1sum              unlzma
 bzip2recover              factor                               md5sum               sha224sum            unlzop
 bzless                    fallocate                            media-ctl            sha256sum            unxz
 bzmore                    fbinit                               memtester            sha384sum            unzip
 canbusload                fincore                              mesg                 sha3sum              uptime
 can-calc-bit-timing       find                                 microcom             sha512sum            usbcam_test
 candump                   flock                                mkfifo               shred                users
 canfdtest                 fmt                                  mkpasswd             shuf                 uudecode
 cangen                    fold                                 mosquitto_passwd     slcan_attach         uuencode
 cangw                     free                                 mosquitto_pub        slcand               uuidgen
 canlogserver              fuser                                mosquitto_sub        slcanpty             uuidparse
 canplayer                 gcore                                MQTTVersion          smtpd.py.7           v4l2-compliance
 cansend                   gdb                                  namei                sort                 v4l2-ctl
 cansniffer                gdbserver                            nettle-hash          split                v4l2-sysfs-path
 cec-compliance            getopt                               nettle-lfib-stream   sqlite3              vdecoderdemo
 cec-ctl                   gpadc_test                           nettle-pbkdf2        ssh                  vlock
 cec-follower              gpio_test                            nl                   ssh-add              w
 chcon                     groups                               nohup                ssh-agent            watchdog
 choom                     head                                 nproc                ssh-copy-id          wc
 chrt                      hexdump                              nslookup             ssh-keygen           wget
 chvt                      hexedit                              numfmt               ssh-keyscan          whereis
 cksum                     hostapd_cli                          od                   stat                 which
 clear                     hostid                               openvt               stdbuf               who
 cmp                       hwmac-R                              ota-burnboot0        stream_player_test   whoami
 col                       id                                   ota-burnuboot        strings              xargs
 colcrt                    install                              parserdemo           sum                  xmetademo
 collectdctl               ipcmk                                passwd               svc                  xmlwf
 collectd-tg               ipcrm                                paste                svok                 xplayerdemo
 colrm                     ipcs                                 patch                tac                  xxd
 column                    iperf3                               pathchk              tail                 xz
 comm                      iptables-xml                         pinky                tee                  xzcat
 coreutils                 ir-ctl                               pip                  telnet               yes
 crontab                   ir-keytable                          pip3                 test
 csi_test_usrptr           isosize                              pip3.7               testj1939
 csplit                    isotpdump                            pkcs1-conv           tftp
 cut                       isotpperf                            poff                 time
root@myd-yt113-s3:~#

也确实没有相关的。

再在/usr/lib/下搜索“*ssl*”,结果如下:



root@myd-yt113-s3:~# find /usr/lib/ -name "*ssl*"
/usr/lib/libevent_openssl-2.1.so.6.0.2
/usr/lib/libssl.so.1.1
/usr/lib/libevent_openssl-2.1.so.6
/usr/lib/python3.7/asyncio/sslproto.pyc
/usr/lib/python3.7/site-packages/pip/_vendor/urllib3/util/ssl_.pyc
/usr/lib/python3.7/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.pyc
/usr/lib/python3.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname
/usr/lib/python3.7/site-packages/setuptools/ssl_support.pyc
/usr/lib/python3.7/ssl.pyc
/usr/lib/libssl.so
/usr/lib/libevent_openssl.so
/usr/lib/dovecot/libssl_iostream_openssl.so
/usr/lib/libdcrypt_openssl.so
root@myd-yt113-s3:~#

这样看的话,似乎系统中已经有了openssl相关的库。

二、详细步骤

为了进一步验证系统镜像中是否已自带(编译)了openssl,在MYD-YT113X(T113-S3)开发板SDK的buildroot中,通过menuconfig看一下是否已经将openssl勾选上了。

1. 查看Buildroot中openssl相关选项是否已被勾选

(1)进入Buildroot menuconfig

进入宿主机T113工作目录执行./build.sh buildroot_menuconfig命令。实际命令及结果如下:



habit@ubuntu:~/work/myir/T113$ ./build
build/     buildroot/ build.sh   
habit@ubuntu:~/work/myir/T113$ ./build.sh buildroot_menuconfig

打开menuconfig配置界面后。如下图所示:

从0到1玩转MYD-YT113X全志开发板 —— 移植openssl

(2)查找定位openssl相关选项位置

输入'/',在其中搜索“openssl”,结果如下:

从0到1玩转MYD-YT113X全志开发板 —— 移植openssl

从0到1玩转MYD-YT113X全志开发板 —— 移植openssl

可以看到,openssl相关选项在“Target packages -> Libraries -> Crypto -> openssl support”下。

依次进入各界面,最终到其下:

从0到1玩转MYD-YT113X全志开发板 —— 移植openssl

可以看到,openssl相关的选项已经默认被选中了。

从0到1玩转MYD-YT113X全志开发板 —— 移植openssl

当然,默认并没有选中“openssl binary”、“openssl additional engines”,不过当前应该只用到openssl库,那两个选项不选也没太大影响。

这样,就验证了openssl库默认已经被编译进Buildroot了,与在开发板上的/usr/lib/下的发现一致。也就说明,在MYD-YT113X(T113-S3)开发板上,无需专门移植openssl库了。

© 版权声明

相关文章

暂无评论

none
暂无评论...