分享

安装OpenWrt交叉编译链,交叉编译MQTT静态库...

 yydy1983 2022-11-16 发布于中国香港

一、安装OpenWrt交叉编译链将openwrt源码放到hom目录的文件夹下

1 )解压交叉工具链压缩包
将交叉工具链安装到 ubuntu 的“ /opt ”目录下。首先切换到 openwrt 的根目录下,输入如下命令:
  1. sudo tar  jxvf ./openwrt-toolchain-ramips-mt76x8_gcc-7.3.0_musl.Linux-x86_64 -C /opt/

  2. /openwrt-toolchain-ramips-mt76x8_gcc-7.3.0_musl.Linux-x86_64替换为自己的文件路径
在提示输入超级用户密码后,将交叉工具链压缩包解压到 ubuntu 系统的 /opt/ 目录下。
2 )设置环境变量
sudo vi /etc/bash.bashrc
在文件最后添加以下配置
export PATH=/opt/openwrt-toolchain-ramips-mt76x8_gcc-7.3.0_musl.Linux-x86_64/toolchain-mipsel_24kc_gcc-7.3.0_musl/bin:$PATH
最后保存退出。
接着在终端执行以下命令:
source /etc/bash.bashrc
3 )检查是否安装成功
mipsel-openwrt-linux-gcc -v
此时应打印出交叉编译工具的一些信息,表示安装成功

二、交叉编译MQTT静态库

1)进入 根目录执行cmake,如果失败可能是没有安装cmake,执行apt install cmake安装cmake
2)执行cmake
  1. cmake . -DPAHO_BUILD_STATIC=TRUE -DCMAKE_C_COMPILER=mipsel-openwrt-linux-gcc -DPAHO_WITH_SSL=FALSE


  2. mipsel-openwrt-linux-gcc是将静态库交叉编译成openwrt下可以运行的库
  3. 如果编译在linux下可以运行的就换成gcc
执行cmake过程中可能会遇到错误
  1. -- The CXX compiler identification is unknown
  2. CMake Error at test/CMakeLists.txt:1 (PROJECT):
  3. No CMAKE_CXX_COMPILER could be found.

  4. Tell CMake where to find the compiler by setting either the environment
  5. variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  6. to the compiler, or to the compiler name if it is in the PATH.


  7. -- Configuring incomplete, errors occurred!

原因是没有安装gcc和g++编译环境。安装方法很简单,一行命令搞定。在终端输入sudo apt-get install build-essential进行安装即可。为了查看是否安装上了,可以依次输入gcc --version、g++ --version来查看安装的gcc和g++的版本号。如果输出如下信息,则表明安装成功:

  1. gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
  2. Copyright (C) 2017 Free Software Foundation, Inc.
  3. This is free software; see the source for copying conditions.  There is NO
  4. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  5. g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
  6. Copyright (C) 2017 Free Software Foundation, Inc.
  7. This is free software; see the source for copying conditions.  There is NO
  8. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

安装成功后,需要重启刚终端,然后再次输入cmake ..即可生成make文件

 3)执行make命令

 4)然后就可以在src目录下找到你的静态库了

5)静态库编译,使用Cmake
先修改CMakeLists.txt。
进到mqtt库目录:

  1. $:cd paho.mqtt.c-master/
  2. $:mkdir target_lib
  3. $:cd target_lib/
  4. $:cmake ..
  5. $:sudo make

编译生成的库路径:

 安装库到ubuntu

静态库安装:


库的简单测试
这里使用异步库做测试
拷贝example到测试目录:

  1. $:cp ~/work/mqtt/paho.mqtt.c-master/src/samples/MQTTAsync_*.c ./
  2. $: gcc MQTTAsync_subscribe.c -o MQTTAsync_subscribe -L/usr/local/lib -lpaho-mqtt3a-static -lpthread
  3. $: gcc MQTTAsync_publish.c -o MQTTAsync_publish -L/usr/local/lib -lpaho-mqtt3a-static -lpthread

文章知识点与官方知识档案匹配,可进一步学习相关知识

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多