精华内容
下载资源
问答
  • 日常生活中,我们时刻不能离手的电子设备,所见所用的办公,娱乐设施大大小小... 交叉编译系统移植过程中代码由高级语言转换为机器码的一个步骤,即我们在电脑或其它平台上写好的代码,需要以目标平台的工具链进行...

    日常生活中,我们时刻不能离手的电子设备,所见所用的办公,娱乐设施大大小小都离不开系统。离我们最近的就有手机的Android系统或IOS系统,这些系统本来并不能直接用在我们现在的商品手机上,需要一定的修改,而所谓的系统移植就是通过优化,修改使其成为符合我们使用习惯的一个过程。

    交叉编译是系统移植过程中代码由高级语言转换为机器码的一个步骤,即我们在电脑或其它平台上写好的代码,需要以目标平台的工具链进行转换才可使用的一个过程(包含库移植)。

    [库移植实战问题注意点1:找不到交叉工具链(建立软连接方法)时改为绝对路径 或 修改环境变量.bashrc]

    下面给大家见见网上搜索到的系统移植的详细操作步骤(包含四大部分,内容较多,建议分段阅读)

    http://www.cnblogs.com/jiangzhaowei/p/6136879.html

    可能您所好奇的MIUI ROM 制作: http://www.miui.com/thread-842680-1-1.html

    而在实际开发过程中,我们拿到新开发板(包含手机研发时)通常也会考虑板子上电及之后硬件层面会发生什么事情,都是什么工作原理,关心用的是否是uboot,与其它有什么不同等等,还会思考用这块芯片能发挥什么性能,做些什么产品。

    b956e19ccde4f64d1ce32a1804e8ade8.png

    电路板,承载系统的物质基础

    下面列举一些可能接触到的概念及资料

    1.[板级支持包](https://baike.baidu.com/item/%E6%9D%BF%E7%BA%A7%E6%94%AF%E6%8C%81%E5%8C%85)(***BSP***)(Board Support Package)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的[驱动程序](https://baike.baidu.com/item/%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F)提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。在[嵌入式系统](https://baike.baidu.com/item/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F)软件的组成中,就有BSP。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的[BSP](https://baike.baidu.com/item/BSP/74511),例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。这样才能与上层OS保持正确的接口,良好的支持上层OS。

    2.![nand擦除计算.png](http://upload-images.jianshu.io/upload_images/2636843-cbfeb5bb163f2031.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    3. ADS与GCC

    都是Arm软件开发的工具,一般公司会有自己的交叉工具链。

    一般LINUX、UCLINUX 的移植于开发都用GCC。

    而不带OS或者移植简单的ucos,多用ADS进行开发。在Windows PC上,多用于ADS. LINUX的操作系统或者通过虚拟机的LINUX,多用GCC.

    ads直接编译生成的.bin文件可以在没有os的板子上跑啊,干嘛还要什么gcc编译? 你只要设置ads的配置参数就行了呀。如果是在linux下,就要下载一个交叉编译工具,解压后把工具的路径设置成环境变量,然后arm-linux-gcc 编译,就可以生成你要的在板子上跑的代码了。

    通过对部分系统源码的接触学习过程中,我个人想法是能否实现一款基于私有云同步的手机系统,既包含语言助手(可进行语言唤醒,支持本地化/方言,又能免唤醒词),希望看到本文的您也能一起努力,实现一款自己满意的作品。

    展开全文
  • MQTT源码交叉编译与移植

    千次阅读 2017-12-01 09:22:18
    基于MQTT源码的嵌入式LINUX移植,网上可参看资料几乎没有,估计用的不多,没什么人弄,又或者 太简单,没人写参考。这里记录下编译与移植过程。大致有三部分,交叉编译openssl、交叉编译MQTT、安装MQTT服务器...
    基于MQTT源码的嵌入式LINUX移植,网上可参看资料几乎没有,估计是用的不多,没什么人弄,又或者
    太简单,没人写参考。这里记录下编译与移植过程。大致有三部分,交叉编译openssl、交叉编译MQTT、安装MQTT服务器。

    1 交叉编译OPENSSL

    因为MQTT用到OPENSSL库,所以编译MQTT的时候要先编译OPENSSL。解压源文件,创建openssl安装目录,配置openssl Makefile编译,安装。
    CC = arm-fsl-linux-gnueabi-gcc AR = arm-fsl-linux-gnueabi-ar RANLIB = arm-fsl-linux-gnueabi-ranlib INSTALLTOP = /home/MQTT/openssl OPENSSLDIR = /home/MQTT/openssl
    $ tar zxvf openssl-0.9.8e.tar.gz
    $ cd openssl-0.9.8e
    $ mkdir /home/QMTT/openssl
    $ gedit Makefile
    $ make
    $ make install
    编译无误会在openssl目录下生成头文件,库文件等,编译MQTT的时候,指定这个头文件库文件路径即可

    2 交叉编译MQTT

    下载源码,解压,修改Makefile,交叉编译http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.c.git/snapshot/org.eclipse.paho.mqtt.c-1.0.3.tar.gz

    CC = arm-fsl-linux-gnueabi-gcc CFLAGS += -I/home/MQTT/openssl/include LDFLAGS += -L/home/MQTT/openssl/lib

    $ tar -jxvf eclipse-paho-mqtt-unix-1.0.3.tar.bz
    $ cd org.eclipse.paho.mqtt.c-1.0.3
    $ gedit Makefile 
    $ make

    CFLAGS LDFLAGS是指定openssl库路径,不指定的话编译器会提示找不到ssl库,make完成后会在build目录下生成MQTT动态库文件及一些应用的例子可执行文件,可以用于测试。把目录下libxx.so.xx复制到目标板/usr/lib目录下,把/build/output/sample 可执行文件复制到目标板/opt目录用于测试。

    # mount -t nfs -o nolock 192.168.1.110:/home/zhu /mnt
    # cd /mnt/zhu/build
    # cp /output lib* /usr/lib
    # cp -rf /output/sample /opt

    3 搭建MQTT服务器,测试

    Linux下搭建mosquitto服务器,参考教程http://blog.csdn.net/xukai871105/article/details/39252653
    在linux主机上安装,不需要交叉编译,直接make,make install即可,提示找不到.h文件的时候,安装相应库文件即可。安装完成后还要修改下配置文件,增加mosquitto用户。
    $cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
    $useradd mosquitto
    $mosquitto -v
    mosquitto -v打开mosquitto服务,真确打开,终端会显示
    1455613844: mosquitto version 1.4.8 (build date 2016-02-16 12:47:49+0800) starting
    1455613844: Using default config.
    1455613844: Opening ipv4 listen socket on port 1883.
    1455613844: Opening ipv6 listen socket on port 1883.
    1455613856: New connection from 192.168.1.136 on port 1883.
    

    目标板上运行可执行文件测试
    #./opt/sample/subasync
    正确的话开发板终端会显示:
    Waiting for publication of Hello World!
    on topic MQTT Examples for client with ClientID: ExampleClientPub
    Message with token value 1 delivery confirmed
    
    linux主机终端显示:
    1455613856: New client connected from 192.168.1.136 as ExampleClientSub (c1, k20).
    1455613856: Sending CONNACK to ExampleClientSub (0, 0)
    1455613856: Received SUBSCRIBE from ExampleClientSub
    1455613856: 	MQTT Examples (QoS 1)
    1455613856: ExampleClientSub 1 MQTT Examples
    1455613856: Sending SUBACK to ExampleClientSub
    
    出现无法连接错误,可能是由于mosquitto服务没有开启,或者是应用程序的IP地址不是mosquitto服务端的IP地址。修改相应文件的代码即可,以subasync.c为例,修改
    #define ADDRESS     "tcp://localhost:1883"为 #define ADDRESS     "tcp://192.168.1.110:1883"
    192.168.1.110为mosquitto服务端IP地址。

    注:也可以直接运行MQTTAsync_publish文件而不搭建mosquitto服务器,MQTTAsync_publish文件直接从m2m.eclipse.org服务器获取数据,这里开发板ping不通外网,所以没成功。
    展开全文
  • 本文将通过以下三个部分来介绍交叉编译移植 FFmpeg 编译 FFmpeg+LIBX264+FACC交叉编译 实现264流录制AVI文件 移植FFmpeg在arm交叉编译时遇到的问题 一、FFmpeg 编译 FFmpeg 是什么? FFmpeg...
        

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680
    本文将通过以下三个部分来介绍交叉编译移植

    • FFmpeg 编译
    • FFmpeg+LIBX264+FACC交叉编译 实现264流录制AVI文件
    • 移植FFmpeg在arm交叉编译时遇到的问题

    一、FFmpeg 编译

    FFmpeg 是什么?

    FFmpeg 全称(First Forward MPEG),是一款领先的开源多媒体框架,采用 LGPL 或 GPL 许可证,除了具有音视频编解码功能外,还有视频格式转换、视频抓图、视频水印、推流等功能。 FFmpeg 在 Linux 平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括 Windows 、Mac OS X 等。

    FFmpeg的官方网站是:http://ffmpeg.org/

    3239933-2ffeea2a8d919a25.jpg

    Windows 平台下,编译好的可用版本一般有三个: Static ,Shared ,Dev 。Static 里面有 3 个应用程序:ffmpeg.exe ,ffplay.exe ,ffprobe.exe ,动态链接库都被编译在 exe 文件中,每个 exe 的体积都很大,可直接运行,如播放一段视频,命令行下执行:ffmpeg video.mp4。Shared 里面除了 3 个应用程序:ffmpeg.exe ,ffplay.exe ,ffprobe.exe 之外,还有一些动态链接库,如 avcodec-54.dll 之类的,Shared 里面的 exe 体积较小。Dev 版本主要用于开发的,里面包含了一些库文件 xxx.lib 和文件 xxx.h 。

    3239933-c211e8b2dde071b3.png

    Linux 平台下,本文选择的版本是 2.6.9 ,地址:http://ffmpeg.org/olddownload.html

    编译 FFmpeg

    搭建 Linux 开发环境,安装 Ubuntu 虚拟机或者电脑装成双系统,或者购买一个低配的阿里云主机,文件传输工具推荐 FileZilla 或 XFTP 。

    Linux 环境下配置 NDK

    首先下载 Linux 环境下的 NDK (注意科学上网),如 android-ndk-r11c-linux-x86_64.bin
    执行如下命令进行解压缩:
    ./android-ndk-r11c-linux-x86_64.bin
    配置环境变量,首先编辑 .bashrc 文件。
    vim ~/.bashrc
    在文件结尾添加两行代码:

    export NDKROOT=( NDK 解压的根目录)如 、/usr/workspace/ndk/android-ndk-r11c
    export PATH=$NDKROOT:$PATH
    
    

    更新环境变量:
    source ~/.bashrc

    编译准备

    首先下载 FFmpeg ,地址:http://ffmpeg.org/olddownload.html
    解压:uzip ffmpeg-2.6.9.zip
    然后编写用于编译的 Shell 脚本,在 ffmpeg-2.6.9 根目录下执行:vim build_android.sh

    #!/bin/bash
    make clean
    export NDK=/home/wuhuannan/Android/Sdk/ndk-bundle
    export SYSROOT=$NDK/platforms/android-14/arch-arm/
    export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
    export CPU=arm
    export PREFIX=$(pwd)/android/$CPU
    export ADDI_CFLAGS="-marm"
    
    ./configure --target-os=linux \
    --prefix=$PREFIX --arch=arm \
    --disable-doc \
    --enable-shared \
    --disable-static \
    --disable-yasm \
    --disable-symver \
    --enable-gpl \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-doc \
    --disable-symver \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
    
    

    然后修改根目录下的 configure 文件。

    #找到并注释以下代码
    #SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
    #LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
    #SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
    #SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
    
    #在上述代码下添加以下代码
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
    SLIB_INSTALL_LINKS='$(SLIBNAME)'
    
    

    修改文件权限:

    chmod +x build_android.sh configure

    执行一下脚本开始编译:

    ./build_android.sh

    约几分钟后,编译生成的动态库文件如下:

    3239933-f72508790a22702c.jpg

    二、FFmpeg+LIBX264+FACC交叉编译 实现264流录制AVI文件

    需求:
    把标准的h264流保存成avi格式的实现文件,所以须要h264的解码器,avi文件容器,传输协议类型是文件。这些会体如今ffmpeg的configure配置上--disable-everything --enable-protocol=file --enable-encoder=libx264 --enable-encoder=libfaac --enable-libx264 --enable-gpl --enable-libfaac --enable-nonfree --enable-muxer=avi --enable-demuxer=avi。
    1 .下载libx264 ffmpeg facc
    下载的三个包:x264-snapshot-20120718-2245-stable.tar.bz ffmpeg-0.11.1.tar.gz faac-1.28.tar.bz2
    2 .交叉编译libx264

    2.1 解压x264-snapshot-20120718-2245-stable.tar.bz 到文件夹 /root/workspace/multimedia/ffpmeg

    2.2 进入文件夹 /root/workspace/multimedia/ffpmeg/x264-snapshot-stable

    2.3 创建文件夹 /root/workspace/multimedia/ffpmeg/out

    2.4 运行configure 构造Makefile

    ./configure --enable-static --host=arm-linux --disable-asm --prefix=/root/workspace/multimedia/ffpmeg/out

    2.5 改动config.mak

    CC=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc

    LD=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc -o

    AR=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-ar rc

    RANLIB=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-ranlib

    STRIP=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-strip

    保存

    2.6 运行 make

    2.7 运行 make install,结束。

    编译好的静态库 放在out文件夹里

    3 交叉编译 faac
    3.1 解压 ffmpeg 到文件夹/root/workspace/multimedia/ffmpeg

    3.2 进入文件夹 /root/workspace/multimedia/ffmpeg/ffmpeg-1.0

    3.3 运行configure 构造Makefile

    ./configure --enable-static --host=arm-linux --with-mp4v2 --prefix=/root/workspace/multimedia/ffpmeg/out CC=/opt/dm6467t/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc CXX=/opt/dm6467t/arm-2009q1-203/bin/arm-none-linux-gnueabi-g++

    3.4 运行 make

    3.5 运行 make install

    3.6 运行 make clean,结束。

    编译好的静态库,放在out文件夹里 尽管配置了静态库但动态库已编译了。

    4 交叉编译 ffmpeg
    4.1 解压 ffmpeg 到文件夹/root/workspace/multimedia/ffmpeg

    4.2 进入文件夹 /root/workspace/multimedia/ffmpeg/ffmpeg-1.0

    4.3 运行configure 构造Makefile

    ./configure --arch=arm --target-os=linux --cc=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc cxx=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-g++ strip=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-strip --enable-cross-compile --disable-avdevice --disable-avfilter --disable-network --enable-static --disable-shared --enable-small --disable-debug --disable-everything --enable-protocol=file --enable-encoder=libx264 --enable-encoder=libfaac --enable-libx264 --enable-gpl --enable-libfaac --enable-nonfree --enable-muxer=avi --enable-demuxer=avi --prefix=/root/workspace/smart-box-apps-v1.0/sbox_app/multimedia/ffpmeg/out --extra-cflags=-I/root/workspace/smart-box-apps-v1.0/sbox_app/multimedia/ffpmeg/out/include --extra-ldflags=-L/root/workspace/smart-box-apps-v1.0/sbox_app/multimedia/ffpmeg/out/lib

    4.4 运行 make

    4.5运行 make install,结束。

    编译好的静态库 放在out文件夹里。

    说明: --disable-everything 一定要关闭全部,然后再打开你须要的模块。不然编译的静态库有几十兆

    5 使用 ffmpeg 库
    改动原有的Makefile 加入:
    INCLUDES+=-I$(SBOX_APP_DIR)/multimedia/ffpmeg/out/include

    LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libavformat.a

    LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libavcodec.a

    LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libx264.a

    LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libfaac.a

    LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libavdevice.a

    LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libavfilter.a

    LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libavutil.a

    LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libswresample.a

    LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libswscale.a

    编译出可运行程序2.2M大小,裁剪成功。

    三、移植FFmpeg在arm交叉编译时遇到的问题

    遇到的问题1:

    19956127-1aa928e312865f22.png

    aarch64-himix100-linux-gcc is unable to create an executable file.C compiler test failed.
    解决方法:

    1、首先查看移植时具体出现的问题:vi ffbuild/config.log ,config.log是在./congfigure遇到问题时的记录日志,直接查看最后一行


    19956127-1a3a9992d14f2108.png

    出现:aarch64-himix100-linux-gcc: error: missing argument to '-mcpu='

    2、这是因为./congfigure配置选项--cpu类型没有赋值,看了一下交叉编译平台的cpu类型是cortex-a73

    3、在配置选项加入 ./congfigure --cpu=cortex-a73,即可解决。(gcc编译的就不是arm系统了,直接删除arch=arm这项)

    遇到的问题2:

    libavcodec/arm/idctdsp_arm.S:1: 错误: junk at end of line, first unrecognized character is `@'

    19956127-2382e86b18f25dd8.png

    解决方法1:

    .S文件是gcc自己管理的,这种问题很大可能是汇编器的问题,可能是汇编器版本不匹配,或者没有汇编器,替换一下同一汇编版本的 .S 。

    解决方法2:

    在配置选项加入 ./congfigure --disable-asm,即可解决。
    参考 https://www.jianshu.com/p/4075d1ba592e
    https://blog.csdn.net/weixin_42432281/article/details/90023643
    https://www.cnblogs.com/tlnshuju/p/6962178.html

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680

    展开全文
  • 基于MQTT源码的嵌入式LINUX移植,网上可参看资料几乎没有,估计用的不多,没什么人弄,又或者太简单,没人写参考。这里记录下编译与移植过程。大致有三部分,交叉编译openssl、交叉编译MQTT、安装MQTT服务器。1 ...
    基于MQTT源码的嵌入式LINUX移植,网上可参看资料几乎没有,估计是用的不多,没什么人弄,又或者
    太简单,没人写参考。这里记录下编译与移植过程。大致有三部分,交叉编译openssl、交叉编译MQTT、安装MQTT服务器。

    1 交叉编译OPENSSL

    因为MQTT用到OPENSSL库,所以编译MQTT的时候要先编译OPENSSL。解压源文件,创建openssl安装目录,配置openssl Makefile编译,安装。
    CC = arm-fsl-linux-gnueabi-gccAR = arm-fsl-linux-gnueabi-ar RANLIB = arm-fsl-linux-gnueabi-ranlibINSTALLTOP = /home/MQTT/openssl OPENSSLDIR = /home/MQTT/openssl
    $ tar zxvf openssl-0.9.8e.tar.gz
    $ cd openssl-0.9.8e
    $ mkdir /home/QMTT/openssl
    $ gedit Makefile
    $ make
    $ make install
    编译无误会在openssl目录下生成头文件,库文件等,编译MQTT的时候,指定这个头文件库文件路径即可

    2 交叉编译MQTT

    下载源码,解压,修改Makefile,交叉编译http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.c.git/snapshot/org.eclipse.paho.mqtt.c-1.0.3.tar.gz

    CC = arm-fsl-linux-gnueabi-gcc CFLAGS += -I/home/MQTT/openssl/includeLDFLAGS += -L/home/MQTT/openssl/lib

    $ tar -jxvf eclipse-paho-mqtt-unix-1.0.3.tar.bz
    $ cd org.eclipse.paho.mqtt.c-1.0.3
    $ gedit Makefile 
    $ make

    CFLAGS LDFLAGS是指定openssl库路径,不指定的话编译器会提示找不到ssl库,make完成后会在build目录下生成MQTT动态库文件及一些应用的例子可执行文件,可以用于测试。把目录下libxx.so.xx复制到目标板/usr/lib目录下,把/build/output/sample 可执行文件复制到目标板/opt目录用于测试。

    # mount -t nfs -o nolock 192.168.1.110:/home/zhu /mnt
    # cd /mnt/zhu/build
    # cp /output lib* /usr/lib
    # cp -rf /output/sample /opt

    3 搭建MQTT服务器,测试

    Linux下搭建mosquitto服务器,参考教程http://blog.csdn.net/xukai871105/article/details/39252653
    在linux主机上安装,不需要交叉编译,直接make,make install即可,提示找不到.h文件的时候,安装相应库文件即可。安装完成后还要修改下配置文件,增加mosquitto用户。
    $cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
    $useradd mosquitto
    $mosquitto -v
    mosquitto -v打开mosquitto服务,真确打开,终端会显示
    1455613844: mosquitto version 1.4.8 (build date 2016-02-16 12:47:49+0800) starting
    1455613844: Using default config.
    1455613844: Opening ipv4 listen socket on port 1883.
    1455613844: Opening ipv6 listen socket on port 1883.
    1455613856: New connection from 192.168.1.136 on port 1883.
    

    目标板上运行可执行文件测试
    #./opt/sample/subasync
    正确的话开发板终端会显示:
    Waiting for publication of Hello World!
    on topic MQTT Examples for client with ClientID: ExampleClientPub
    Message with token value 1 delivery confirmed
    
    linux主机终端显示:
    1455613856: New client connected from 192.168.1.136 as ExampleClientSub (c1, k20).
    1455613856: Sending CONNACK to ExampleClientSub (0, 0)
    1455613856: Received SUBSCRIBE from ExampleClientSub
    1455613856: 	MQTT Examples (QoS 1)
    1455613856: ExampleClientSub 1 MQTT Examples
    1455613856: Sending SUBACK to ExampleClientSub
    
    出现无法连接错误,可能是由于mosquitto服务没有开启,或者是应用程序的IP地址不是mosquitto服务端的IP地址。修改相应文件的代码即可,以subasync.c为例,修改
    #define ADDRESS     "tcp://localhost:1883"为#define ADDRESS     "tcp://192.168.1.110:1883"
    192.168.1.110为mosquitto服务端IP地址。

    注:也可以直接运行MQTTAsync_publish文件而不搭建mosquitto服务器,MQTTAsync_publish文件直接从m2m.eclipse.org服务器获取数据,这里开发板ping不通外网,所以没成功。
    展开全文
  • 我在做QT的移植 用的aarch64-linux-gnu-gcc编译器,交叉编译已经成功,由于板子上没有太大的空间就把需要的lib放到了/usr/lib下,platforms放到了和可执行文件同一个目录下,可是还是报错This application failed ...
  • 1.为什么要有交叉编译器? \qquad一般电脑X86架构,而单片机一般不是,比如单片机ARM架构,那么gcc编译生成的程序只能在X86的架构上运行,而不能在ARM架构上运行,所以需要交叉编译器编译生成能在ARM架构上运行...
  • 本文章参考了。http://blog.csdn.net/lawishere/article/details/8182952,写...特此感谢 1、首先到它的主页下载一个源码包: ... 我下载的latest的,具体什么版本还真不清楚 2、放到linux目录下解压: root...
  • 源码安装及移植 交叉编译

    千次阅读 2016-12-18 17:45:09
    源码是什么? 脱离于linux具体发行版本的,实现特定功能的,需要编译生成目标文件的源代码. 为什么还要编译源码? x86 架构,是有源维护的,arm-openwrt 也有源维护,arm-Raspberry Pi 也有源维护.但是linux适用的...
  • 第一步jpeg库的移植 ... 2、解压,进入其目录, ...3、配置源码,(具体配置项可以运行命令./configure --help看看是什么意思,根据实际情况修改)  ./configure CC=arm-linux-gcc --host=arm-unknown-linux -
  • 由于busybox一个精简的指令集组成的简单文件系统,其优点就是极精简,满足了Linux基本的启动需求,由于它几乎没有什么后台服务,对于追求极度裁剪的系统开发者而言一个非常好的体验,不过,也正是由于其精简,很...
  • 由于busybox一个精简的指令集组成的简单文件系统,其优点就是极精简,满足了Linux基本的启动需求,由于它几乎没有什么后台服务,对于追求极度裁剪的系统开发者而言一个非常好的体验,不过,也正是由于其精简,很...
  • 最近实验室在搞一个嵌入式开发的项目,需要将Linux上编写的程序移植到ARM开发板上,由于之前也并没有做过这个方面,所以踩了不少的坑,这里把完整过程记录下来...什么是交叉编译? 交叉编译说白了就是要在一个架构平...
  • 首先说明为什么需要搭建交叉编译环境。我们知道,我们的开发一般在PC机上,基于X86架构的,而我们的开发板却基于ARM架构的。如果在PC主机上编辑编译我们的程序,那编译时按照X86架构来进行的,这样的话编译的二进制...
  • 什么是 NDK? Android NDK 一套可以让开发者在安卓应用开发中使用 C/C++ 实现特定模块的工具集,不是所有应用都需要用到,但是正确地使用可以有效提高应用运行效率和安全性。 为什么要在安卓开发中使用 NDK...
  • 因为毕设的原因,所以需要在开发板上使用QT,所以移植了QT,简单地说是使用了厂家提供好的东西移植的。但是运行程序的时候发现无法使用触摸屏,这就很麻烦,然后就百度了一下,发现一个大神辛辛苦苦弄明白了为什么不...
  • 你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,...
  • 什么基础又想编译的可以先看前文提供的参考,有个了解,再在碰到错误的时在这里候查下,我倒是很推荐国外的那个Cross-Compiled Linux From Scratch,讲解的非常详细全面,而且不光在嵌入式...
  • 系统移植学习

    2021-02-09 09:46:40
    【1】什么是系统移植? 为什么学习系统移植? 学习系统移植的目的? 如何学习系统移植什么是系统移植? 就是将操作系统移植到对应的硬件平台 linux系统移植到开发板 为什么学习系统移植? 软硬件可裁剪 公司...
  • 可以在windows或者linux上写都行,我个人的习惯在windows下面编辑代码,查看运行效果,效果没问题了在拿到linux下进行交叉编译。 下面我们现在windows下写一个最简单的例子:你好世界! 这个例子中会使用到中文...
  • MiniGUI移植

    千次阅读 2016-09-11 11:51:16
    最近几天在移植minigui,一直没有使用过minigui界面,想看看什么效果,顺便学习一下,毕竟国产的。花了我三天的时间,终于在我的LCD上显示minigui界面了,可以运行MDE演示程序。期间遇到很多问题,还好我都把我的...
  • 系统移植过程

    2019-07-19 15:35:00
    什么是交叉编译环境? 在开发主机上开发出能够在目标机(我们的开发板)上运行的程序。 为什么要安装交叉编译环境? **原因一:**因为嵌入式的资源有很多限制,CPU主频低、内存小,去编译一个linux kernel会跑不动,...
  • 嵌入式Linux系统移植

    千次阅读 2019-02-13 15:49:19
    嵌入式Linux系统移植主要由四大部分组成:一、搭建交叉开发环境二、bootloader的选择和移植三、kernel的配置、编译、和移植四、根文件系统的制作第一部分:搭建交叉开发环境 先介绍第一分部的内容:搭建交叉开发...
  • miniGUI移植

    2014-01-04 15:18:30
    最近几天在移植minigui,一直没有使用过minigui界面,想看看什么效果,顺便学习一下,毕竟国产的。花了我三天的时间,终于在我的LCD上显示minigui界面了,可以运行MDE演示程序。期间遇到很多问题,还好我都把我的...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 155
精华内容 62
关键字:

交叉移植是什么