-
虚拟机交叉编译心得_带你了解什么叫系统移植及交叉编译
2021-01-01 10:45:54日常生活中,我们时刻不能离手的电子设备,所见所用的办公,娱乐设施大大小小... 交叉编译是系统移植过程中代码由高级语言转换为机器码的一个步骤,即我们在电脑或其它平台上写好的代码,需要以目标平台的工具链进行...日常生活中,我们时刻不能离手的电子设备,所见所用的办公,娱乐设施大大小小都离不开系统。离我们最近的就有手机的Android系统或IOS系统,这些系统本来并不能直接用在我们现在的商品手机上,需要一定的修改,而所谓的系统移植就是通过优化,修改使其成为符合我们使用习惯的一个过程。
交叉编译是系统移植过程中代码由高级语言转换为机器码的一个步骤,即我们在电脑或其它平台上写好的代码,需要以目标平台的工具链进行转换才可使用的一个过程(包含库移植)。
[库移植实战问题注意点1:找不到交叉工具链(建立软连接方法)时改为绝对路径 或 修改环境变量.bashrc]
下面给大家见见网上搜索到的系统移植的详细操作步骤(包含四大部分,内容较多,建议分段阅读)
http://www.cnblogs.com/jiangzhaowei/p/6136879.html
可能您所好奇的MIUI ROM 制作: http://www.miui.com/thread-842680-1-1.html
而在实际开发过程中,我们拿到新开发板(包含手机研发时)通常也会考虑板子上电及之后硬件层面会发生什么事情,都是什么工作原理,关心用的是否是uboot,与其它有什么不同等等,还会思考用这块芯片能发挥什么性能,做些什么产品。
电路板,承载系统的物质基础
下面列举一些可能接触到的概念及资料
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.
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不通外网,所以没成功。 -
Native开发工具之交叉编译移植(五)
2019-11-25 11:57:55本文将通过以下三个部分来介绍交叉编译移植 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/
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 。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
约几分钟后,编译生成的动态库文件如下:
二、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 .交叉编译libx2642.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/ffmpeg3.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/ffmpeg4.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/includeLIBS+=$(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:
aarch64-himix100-linux-gcc is unable to create an executable file.C compiler test failed.
解决方法:1、首先查看移植时具体出现的问题:vi ffbuild/config.log ,config.log是在./congfigure遇到问题时的记录日志,直接查看最后一行
出现: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 `@'
解决方法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
-
10.MQTT源码交叉编译与移植
2018-06-27 14:09:56基于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不通外网,所以没成功。 -
aarch64-linux-gnu-gcc QT交叉编译移植
2018-11-16 03:00:15我在做QT的移植 用的是aarch64-linux-gnu-gcc编译器,交叉编译已经成功,由于板子上没有太大的空间就把需要的lib放到了/usr/lib下,platforms放到了和可执行文件同一个目录下,可是还是报错This application failed ... -
linux的系统移植——交叉编译器
2020-11-27 11:05:361.为什么要有交叉编译器? \qquad一般电脑是X86架构,而单片机一般不是,比如单片机是ARM架构,那么gcc编译生成的程序只能在X86的架构上运行,而不能在ARM架构上运行,所以需要交叉编译器编译生成能在ARM架构上运行... -
live555 交叉编译移植到海思开发板
2019-09-28 09:52:05本文章参考了。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适用的... -
libjpeg的交叉编译(移植Mjpg-streamer之前必须移植好libjpeg)
2014-12-23 16:23:19第一步jpeg库的移植 ... 2、解压,进入其目录, ...3、配置源码,(具体配置项可以运行命令./configure --help看看是什么意思,根据实际情况修改) ./configure CC=arm-linux-gcc --host=arm-unknown-linux - -
linux top交叉编译_交叉编译HTOP并移植到ARM嵌入式Linux系统
2020-12-30 06:05:50由于busybox是一个精简的指令集组成的简单文件系统,其优点就是极精简,满足了Linux基本的启动需求,由于它几乎没有什么后台服务,对于追求极度裁剪的系统开发者而言是一个非常好的体验,不过,也正是由于其精简,很... -
交叉编译HTOP并移植到ARM嵌入式Linux系统
2016-08-29 15:30:00由于busybox是一个精简的指令集组成的简单文件系统,其优点就是极精简,满足了Linux基本的启动需求,由于它几乎没有什么后台服务,对于追求极度裁剪的系统开发者而言是一个非常好的体验,不过,也正是由于其精简,很... -
【交叉编译】Python和C++程序的平台移植教程,x86-Linux到ARM-Linux
2019-04-06 14:15:11最近实验室在搞一个嵌入式开发的项目,需要将Linux上编写的程序移植到ARM开发板上,由于之前也并没有做过这个方面,所以踩了不少的坑,这里把完整过程记录下来...什么是交叉编译? 交叉编译说白了就是要在一个架构平... -
Linux系统移植(1) ------搭建交叉编译环境
2019-10-09 03:05:57首先说明为什么需要搭建交叉编译环境。我们知道,我们的开发一般在PC机上,是基于X86架构的,而我们的开发板却是基于ARM架构的。如果在PC主机上编辑编译我们的程序,那编译时按照X86架构来进行的,这样的话编译的二进制... -
使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台
2015-10-25 13:32:47什么是 NDK? Android NDK 是一套可以让开发者在安卓应用开发中使用 C/C++ 实现特定模块的工具集,不是所有应用都需要用到,但是正确地使用可以有效提高应用运行效率和安全性。 为什么要在安卓开发中使用 NDK... -
QT5.7+tslib1.4库的交叉编译、移植到开发板ARM9上,无法使用触摸屏
2018-03-03 22:13:25因为毕设的原因,所以需要在开发板上使用QT,所以移植了QT,简单地说是使用了厂家提供好的东西移植的。但是运行程序的时候发现无法使用触摸屏,这就很麻烦,然后就百度了一下,发现一个大神辛辛苦苦弄明白了为什么不... -
有关嵌入式方面的DPU测试问题,请...如何在板子上打开图片,有什么工具可以交叉编译并移植的,求推荐指导?
2020-03-19 22:20:22这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,... -
arm_linux移植手记(一)——交叉工具链编译(下)
2019-01-04 10:46:12没什么基础又想编译的可以先看前文提供的参考,有个了解,再在碰到错误的时在这里候查下,我倒是很推荐国外的那个Cross-Compiled Linux From Scratch,讲解的非常详细全面,而且不光是在嵌入式... -
系统移植学习
2021-02-09 09:46:40【1】什么是系统移植? 为什么学习系统移植? 学习系统移植的目的? 如何学习系统移植? 什么是系统移植? 就是将操作系统移植到对应的硬件平台 linux系统移植到开发板 为什么学习系统移植? 软硬件可裁剪 公司... -
从零开始移植QT4.8.5之四--交叉编译QT程序并运行在OK6410上
2016-07-23 10:44:03可以在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演示程序。期间遇到很多问题,还好我都把我的...
-
PHP中路由和rewrite的使用
-
用微服务spring cloud架构打造物联网云平台
-
784. 字母大小写全排列
-
java调用dll使用过程详解
-
个人经验分享之做事
-
浙江科技学院《土力学》习题答案(全).pdf
-
行政法与行政诉讼法--期末复习资料.pdf
-
w3cschoolc语言3.zip
-
实现 MySQL 读写分离的利器 mysql-proxy
-
Mysql数据库面试直通车
-
西南科技大学《电路分析A》期末考试试卷(含答案).pdf
-
只运行一次 runonce callonce 获取错误字符串
-
docker 基本组成
-
岳阳职业技术学院《电力电子技术》试卷库(多套试卷且含答案).pdf
-
【MULTINOMIAL】函数使用技巧
-
西方经济学 - 高鸿业 - -第四版答案.pdf
-
西南科技大学《C语言》课后习题答案.pdf
-
VMware vSphere ESXi 7 精讲/VCSA/VSAN
-
在MyEclipse中安装SVN插件subclipse
-
数学建模竞赛论文写作方法.pptx