当前位置: 首页 > news >正文

网站开发中常用的技术和工具关键词优化快排

网站开发中常用的技术和工具,关键词优化快排,铜仁建设局网站首页,php网站开发实例教程代码百度云本篇主要内容#xff1a; 一、交叉编译华为云Iot SDK依赖1.宿主机安装交叉编译工具链#xff08;1#xff09;选择下载交叉编译工具链#xff08;2#xff09;解压、添加环境变量、重启2.交叉编译依赖库#xff08;0#xff09; 准备工作#xff08;1#xff09; 交叉… 本篇主要内容 一、交叉编译华为云Iot SDK依赖1.宿主机安装交叉编译工具链1选择下载交叉编译工具链2解压、添加环境变量、重启2.交叉编译依赖库0 准备工作1 交叉编译openssl2 交叉编译paho3 交叉编译zlib4 交叉编译华为安全函数库★5交叉编译libssh★6交叉编译libnopoll 二、移植SDK测试用例到OrangePi 3B运行1配置交叉编译华为云Iot SDK2在华为云上创建设备接入ioTDA服务3在Orangepi 3B上运行测试用例 三、在cmake项目中使用SDK1将SDK交叉编译成动态库2在cmake中引入SDK动态库 一、交叉编译华为云Iot SDK依赖 开发板 Orangepi 3B 目标操作系统 Orangepi3b_1.0.0_ubuntu_jammy_desktop_xfce_linux6.6.0-rc5 编译平台 ubuntu22.04_x86_64虚拟机 交叉编译器 gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz 注意这里要清楚开发板和编译平台/宿主机各自的操作系统架构下面才能正确选择交叉编译器 说明 这里参考了官方提供的文档可能由于版本更迭按照文档的步骤有报错而且文档没有提供可参考的交叉编译的使用说明出错的解决方法网上也比较少个人感觉不太友好。在文档中分别编译了openssl库、paho库、zlib库、华为安全函数boundscheck库、libssh库、libnopoll库。下面是交叉编译这6个库移植到OrangePi3B的步骤其中带★的库可以省略跳过如果需求只是连接到iot平台上报数据、发布命令实现远程控制的基本功能的话只需要移植不带★的库即可在官方论坛有看到仅编译openssl和paho即可经过测试不适用还需要zlib和boundscheck可能sdk新旧版本的不同。 1.宿主机安装交叉编译工具链 1选择下载交叉编译工具链 交叉编译工具链官方下载地址(国外) ​交叉编译工具链清华开源镜像站下载地址(国内) 2解压、添加环境变量、重启 sudo tar -xvf arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz -C /mntsudo vi /etc/environment # 添加路径:/mnt/arm-gnu-toolchain-13.2.Rel1-x86_64-aarch64-none-linux-gnu/binsudo reboot #重启永久生效也可以使用命令source /etc/environment仅在当前会话生效输入aarch按tab键能补全aarch64-none-linux-gnu-就可以了也可以使用aarch64-none-linux-gnu-gcc -v查看版本 2.交叉编译依赖库 0 准备工作 sudo mkdir ~/mqtt_sdk cd mqtt_sdk # 在根目录下新建目录存放以下编译过程库的源码和过程文件sudo git clone https://github.com/huaweicloud/huaweicloud-iot-device-sdk-c.git # 下载SDK源码下面开始交叉编译sdk所需要的库,所有的库源码都下载到~/mqtt_sdk下 1 交叉编译openssl sudo wget https://www.openssl.org/source/openssl-3.2.0.tar.gz # 下载源码sudo tar -zxvf openssl-3.2.0.tar.gz sudo rm openssl-3.2.0.tar.gz cd openssl-3.2.0/ # 解压sudo ./config no-asm --prefix$(pwd)/_install --cross-compile-prefix/mnt/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- #配置,没有生成Makefile需要检查这一步注意 要使用绝对路径no-asm表示不使用汇编代码# 接着我们vi打开生成的Makefile搜索-m64有的可能是-m32,将这些链接选项都删掉下面编译才不会报错sudo make depend sudo make -j20 #添加依赖并开始编译sudo make install -j20 # 安装编译完成后已经在顶层目录生成交叉编译的库文件个人感觉也可以不用安装直接拷贝这些文件。安装完成后在源码目录下的_install/openssl/lib64生成的库文件我们可以通过file libssl.so.3查看是否是交叉编译生成的目标平台文件 # 最后直接把_install/目录下我们需要的库文件和头文件拷贝到SDK源码里 sudo cp _install/lib64/lib* ../huaweicloud-iot-device-sdk-c/lib/ # 库文件 sudo cp -r _install/include/openssl/ ../huaweicloud-iot-device-sdk-c/include/ # 头文件2 交叉编译paho sudo git clone https://github.com/eclipse/paho.mqtt.c.git # 获取源码编译paho库需要使用到openssl库以及头文件这里需要在Makefile中先指定好 cd paho.mqtt.c/ sudo vi Makefile #打开Makefile搜索DOXYGEN_COMMAND这个字段在下面加入链接openssl的路径再指定编译器LDFLAGS -L/home/$(shell logname)/mqtt_sdk/openssl-3.2.0/_install/lib64 -lrt CFLAGS -I/home/$(shell logname)/mqtt_sdk/openssl-3.2.0/_install/includeCC :: /mnt/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc # 如图所示sudo make clean sudo make -j20 # 开始编译这里没有配置安装路径就不安装了#编译完成后可以在build/output/目录下看到生成的库和头文件和前面一样我们直接拷贝到桌面lib目录 sudo cp build/output/libpaho-mqtt3* ../huaweicloud-iot-device-sdk-c/lib/ #拷贝库文件 sudo cp src/*.h ../huaweicloud-iot-device-sdk-c/include/base/ #头文件需要拷贝的sdk目录下include/base3 交叉编译zlib sudo wget https://github.com/madler/zlib/archive/v1.2.11.zip # 下载源码sudo unzip v1.2.11.zip sudo rm v1.2.11.zip cd zlib-1.2.11/ # 解压源码并删除压缩包sudo CC/mnt/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc ./configure --prefix$(pwd)/_install --libdir$(pwd)/_install/lib --includedir$(pwd)/_install/include #配置交叉编译工具、安装路径等sudo make -j20 sudo make install # 编译、安装sudo cp _install/lib/libz.* ../huaweicloud-iot-device-sdk-c/lib/ # 拷贝库sudo cp -r _install/include/ ../huaweicloud-iot-device-sdk-c/include/zlib # 拷贝头文件4 交叉编译华为安全函数库 sudo git clone https://gitee.com/openeuler/libboundscheck.git cd libboundscheck/ # 获取源码# vi打开Makefile直接将CC?gcc改成下面这样sudo make在lib目录下生成libboundscheck.so即可 CC::/mnt/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc sudo make -j20 #编译 sudo cp lib/libboundscheck.so ../huaweicloud-iot-device-sdk-c/lib/ # 拷贝库文件到这里就完成sdk依赖库的编译对于只需要设备接入、上报数据和下发命令就足够了以下是官方文档提到其它依赖库交叉编译 ★5交叉编译libssh sudo wget https://www.libssh.org/files/0.10/libssh-0.10.6.tar.xz # 下载源码sudo tar -xvf libssh-0.10.6.tar.xz sudo rm libssh-0.10.6.tar.xz cd libssh-0.10.6/ # 解压libssh使用cmake构建项目这里我们直接打开源码顶层目录的CMakeList.txt在前面增加以下内容即可 # 指定交叉编译器 set(CROSS_COMPILE /mnt/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-) set(CMAKE_C_COMPILER ${CROSS_COMPILE}gcc) set(CMAKE_CXX_COMPILER ${CROSS_COMPILE}g)# 指定INSTALL、README提到的几个选项 set(ZLIB_LIBRARY /home/zzk/mqtt_sdk/zlib-1.2.11/_install/lib) set(ZLIB_INCLUDE_DIR /home/zzk/mqtt_sdk/zlib-1.2.11/_install/include) set(OPENSSL_ROOT_DIR /home/zzk/mqtt_sdk/openssl-3.2.0)# 指定最后链接ld库的选项 link_libraries(-L /home/zzk/mqtt_sdk/openssl-3.2.0/_install/lib64 -lcrypto) link_libraries(-L /home/zzk/mqtt_sdk/zlib-1.2.11/_install/lib -lz)sudo mkdir build cd build # 新建build目录用于构建项目源码中INSTALL和README有讲到sudo cmake .. sudo make -j20 # 编译完成后再build/lib生成libssh.so.4.9.6这里如果按照官方手册install就安装到了系统sudo cp lib/libssh.so* ../../huaweicloud-iot-device-sdk-c/lib/ #拷贝库文件 sudo cp -r include/libssh/ ../../huaweicloud-iot-device-sdk-c/include/ #拷贝 头文件★6交叉编译libnopoll 这个库的INSTALL和README只有一个官网地址报错解决方法很难找。如果在编译过程中遇到./nopoll_decl.h:539:1: error empty enum is invalid.优先排查openssl链接路径再考虑openssl编译过程是否正确 sudo wget http://www.aspl.es/nopoll/downloads/nopoll-0.4.8.b429.tar.gz # 下载源码sudo tar -xvf nopoll-0.4.8.b429.tar.gz sudo rm nopoll-0.4.8.b429.tar.gz # 解压cd nopoll-0.4.8.b429/ sudo ./configure --prefix$(pwd)/_install --hostaarch64-none-linux-gnu CC/mnt/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc CFLAGS-I/home/zzk/mqtt_sdk/openssl-3.2.0/_install/include LDFLAGS-L/home/zzk/mqtt_sdk/openssl-3.2.0/_install/lib64 LIBS-lssl -lcrypto # 缺少LIBS会编译报错sudo make -j20# 在顶层目录_install下生成include和lib,同上拷贝到SDK sudo cp _install/lib/libnopoll.* ../huaweicloud-iot-device-sdk-c/lib/ sudo cp _install/include/nopoll/*.h ../huaweicloud-iot-device-sdk-c/include/nopoll/二、移植SDK测试用例到OrangePi 3B运行 1配置交叉编译华为云Iot SDK cd huaweicloud-iot-device-sdk-c/ #切换到sdk目录 sudo vi Makefile #打开顶层目录的Makefile打开SDK顶层的Makefile第一行就是编译器路径修改为交叉编译工具链如下 暂时还不编译我们到华为云创建iot服务再修改sdk目录下src/device_demo/device_demo.c连接到平台进行测试 注意目前sdk默认使用的是mqtt3.1.1本版本也支持mqtt5.0不过需要在顶层目录找到/include/util/mqttv5_util.h搜索找到#define MQTTV5并把注释取消在Makefile中找到MQTTV5 : 1把注释删掉即可完成编译。 2在华为云上创建设备接入ioTDA服务 大致步骤开通服务-控制台创建产品-创建设备详细步骤可见SDK源码中的README之后会得到如下的MQTT连接参数(三元组) sudo vi src/device_demo/device_demo.c # 打开这个程序填入连接参数注意按照sdk文档理论上到这里编译出的示例程序在开发板运行是不会出错的实际上运行效果却是连接不上服务器程序也不会异常退出一直卡在---- start test -----这是比较坑的地方如果遇到了这种异常优先排查nopoll和openssl库的编译过程因为在宿主机上编译如果链接路径和头文件路径没有指定清楚可能会被系统自带的x86 openssl库影响 sudo make -j20 # 编译程序得到如下的可执行程序MQTT_Demofile MQTT_Demo # 查看该程序运行的平台readelf -d MQTT_Demo | grep NEEDED # 查看该程序运行时需要链接的库除了可执行程序MQTT_Demo外还需要将这些动态库拷贝到开发板为了方便这里就直接拷贝sdk里的lib/目录 3在Orangepi 3B上运行测试用例 根据上面的信息将可执行程序和链接库包括其软链接一起打包上传到目标主机OrangePi 3B export LD_LIBRARY_PATH$LD_LIBRARY_PATH:$(pwd)/lib/ #导入链接库环境变量 ./MQTT_Demo #运行成功结果如下三、在cmake项目中使用SDK 到这里我们已经完成SDK及其依赖库的交叉编译为了将SDK集成到我们的项目中这里可以将SDK交叉编译成动态库我们可以在cmake或者Makefile中引入该动态库和相关头文件就可以更方便地使用SDK了并且像CLion、VScode等IDE也有代码提示方便代码编写 1将SDK交叉编译成动态库 sudo vi Makefile #打开顶层目录的Makefile修改如下 sudo make clean #清理 sudo make -j20 #重新编译接着在顶层目录生成动态库libHWMQTT.so 将动态库及其依赖库拷贝到项目中的lib目录头文件拷贝到include目录最后在CMakeList.txt或者是Makefile中去引入即可。 2在cmake中引入SDK动态库 CMakeList.txt实际环境不唯一仅供参考 cmake_minimum_required(VERSION 3.22.1)# 交叉编译器 set(CROSS_COMPILE /mnt/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-) set(CMAKE_C_COMPILER ${CROSS_COMPILE}gcc) project(smartHome_v2.0_rebuild C)# 包含SDK头文件 set(SDK_INCLUDE_PATH ${CMAKE_SOURCE_DIR}/include) include_directories(${SDK_INCLUDE_PATH}) include_directories(${SDK_INCLUDE_PATH}/protocol) include_directories(${SDK_INCLUDE_PATH}/util) include_directories(${SDK_INCLUDE_PATH}/base) include_directories(${SDK_INCLUDE_PATH}/agentlite) include_directories(${SDK_INCLUDE_PATH}/service) # SDK依赖库链接路径 set(SDK_LIBS_PATH ${CMAKE_SOURCE_DIR}/lib) link_libraries(-L ${SDK_LIBS_PATH} -lHWMQTT) link_libraries(-L ${SDK_LIBS_PATH} -lpaho-mqtt3as) link_libraries(-L ${SDK_LIBS_PATH} -lssl) link_libraries(-L ${SDK_LIBS_PATH} -lcrypto) link_libraries(-L ${SDK_LIBS_PATH} -lboundscheck) link_libraries(-L ${SDK_LIBS_PATH} -lz)# 包含系统头文件和系统库 include_directories(/usr/include/cjson) include_directories(/usr/include) include_directories(/usr/local/include)# 本项目头文件 include_directories(src/device)# 源文件 set(OBJS src/light.c src/voice_ctl.c src/main.c src/device/device.c) set(CMAKE_C_STANDARD 11) add_executable(main ${OBJS})
http://www.pierceye.com/news/4763/

相关文章:

  • 整站seo服务应用软件有哪些?
  • 泰兴市住房和建设局网站淘宝网页打不开是什么原因
  • 网站选域名专门用来制作网页的软件是
  • 建网站要国外音乐网站设计
  • 东莞网站推广费用开发软件的成本预算
  • 广州市服务好的网站制作排名织梦网站演示
  • 衡阳网站开发wordpress滑动文本框
  • 网站要怎么做的吗网站验收技术指标
  • dede手机医院网站模板下载wordpress 登录 404
  • 女人脱内衣裤给男人做网站手把手教你制作网页
  • 网站开发的费用wordpress 上传图片不显示
  • 做移动网站优化优网站建设产品需求文档
  • 专业的顺的网站建设出入兰州最新通知今天
  • 中文电子商务网站模板建站公司
  • app域名在哪里注册专业做汽车网站优化排名
  • 在网站上做送餐外卖需要哪些资质wordpress项目管理插件
  • 石家庄有哪些公司可以做网站wordpress多站点 文章导入
  • 在哪个网站上做实验仪器比较好建设工程项目管理网站
  • 品牌网站建设小8蝌蚪外国公司做网站
  • 网站开发 待遇怎么样黄冈网页设计
  • 小企业网站建设地点小红书账号代运营
  • 做下载网站赚钱吗广州网站建设费用
  • 江苏省建设局网站注册一个公司需要花多少钱
  • 微网站和手机网站手机网站建设公司排名
  • 做公众号网站有哪些机械设备如何做网站
  • 怎么自己做淘客网站青岛网站建设选圣城
  • 山西省网站建设哪里好做精美ppt网站
  • 设计网站开发费用计入什么科目那个网站销售好
  • 做搜狗网站点大连导游管理服务中心
  • 响应式网站建设信息网站设计成品