QEMU搭建arm环境1-直接启动kernel
QEMU搭建ARM环境:从启动kernel到SD卡镜像
要通过QEMU模拟ARM系统,码编首先需要选择合适的源译模拟器,如qemu-system-arm针对位Arm cpu(如Arm9,码编3389管理源码 Arm、Cortex-A7/A9/A),源译而qemu-system-aarch则针对位Arm cpu(如Cortex A,码编 A)。使用`qemu-system-arm -machine help`可以查看支持的源译开发板。 搭建过程中,码编先要安装交叉编译工具链,源译从Linaro官网下载并配置环境变量。码编接着,源译从Linux官网获取6.6.8版本的码编kernel源码,注意处理可能的源译编译依赖库安装问题。编译成功后,将生成kernel文件。 对于BusyBox,无需修改配置,编译完成后会在当前目录生成_install文件夹,这部分将在根文件系统构建中发挥作用。手动构建rootfs时,需要在rootfs下创建必要目录,如lib、proc、sys等,并将BusyBox的_install目录文件复制,以及工具链sysroot目录的lib文件(如Linaro的sysroot-glibc-linaro)。记得减小库文件大小以便于镜像。 创建rcS脚本,挂载proc和sysfs,执行设备节点扫描。iapp表白源码包随后,使用`sudo ./rootfs.sh`打包镜像。在启动QEMU虚拟机时,可以选择使用Ubuntu作为根文件系统,通过挂载SD卡的根文件系统,如`sudo create_qemu_ubuntu.sh`生成QEMU SD卡镜像。 为了获得更完善的Ubuntu rootfs,可以考虑使用chroot配合qemu,或者通过debootstrap定制。同时,处理apt update时可能出现的证书错误,将)安装交叉编译器:
先看看自己虚拟机(PC)的信息
然后看下嵌入式设备(arm)的信息
针对arm嵌入式系统,使用Ubuntu.系统apt 安装交叉编译器, 其安装命令是
通过这个指令获取就不用下面的操作下载压缩包了,
从网盘获取交叉编译器、Qt库文件(针对aarch平台)、sysroot文件 # 复制文件到虚拟机系统中
查看解压到的位置
查看刚才解压的文件。
安装完了之后在terminal中输入aarch + TAB,如下就是安装成了:
编译源码测试:
先写个c文件交叉编译试试
main.cpp内容:
编译通过后通过file指令查看文件类型是否是ELF:bit LSB shared object,ARM aarch...。如果是,则完成源码编译。
编译后生成了main可执行文件,拷贝到arm平台测试,查看输出:hello world!!!。
Qt编译arm(aarch)环境搭建
下载qt6.2.4源代码,在虚拟机上编译aarch版本的库文件
打开QT Creator,打开kits配置套件
如下添加一个/opt目录下的qmake
添加gcc g++ aarch编译器
添加一个构建套件kit, 如下:
源程序选择构建套件并运行:
在嵌入式设备linux系统上运行编译好的程序:
复制Qt库到板卡,然后设置相应的环境变量,就可以运行程序。 先复制前面编译的网址导航源码javaQt程序到板卡,然后简单运行程序:
使用winscp拷贝依赖文件到嵌入式设备上,如树莓派:
解压完成后,设置该库为环境变量
并重新运行程序
如果要永久变更,就在~/.bashrc中写入
终端运行:
板卡上可能要安装一些库
MindSpore环境配置记录(一):centos 7.6 aarch 版本下安装Anaconda,升级GLIBC,make 升级,Gcc升级
在centos 7.6 aarch 版本下,安装Anaconda时遇到了最低要求GLIBC为2.的问题。初始版本的GNU libc为2.,这意味着需要进行升级。然而,直接升级GLIBC存在风险,可能导致系统崩溃,因此建议在个人环境中反复测试确保无误后再在生产环境操作,且不要直接从2.跳到2.,应逐版本升级。
尝试以root权限直接升级到2.失败,导致系统崩溃。遇到问题后,有人建议可以制作引导盘进行恢复,但尝试失败。因此,建议谨慎处理Glibc升级,最好逐版本升级,并在docker中进行测试。
在处理过程中,为了避免系统崩溃,先在新创建的用户MStest下进行GCC和Make的升级。首先,添加新用户并下载所需依赖到Downloads目录,然后验证并安装了Make 4.3。社区APP论坛源码尽管Make升级成功,但gmake版本仍需更新。在确认需要升级GCC后,从GCC 4.8开始,通过下载源码、安装依赖并编译来完成升级。
尽管GCC升级过程复杂,还需要配置环境变量,但最终遇到的问题是升级glibc时,发现Python版本不匹配。解决Python和zlib问题后,编译glibc时仍然遇到了问题,尝试使用非root用户失败,导致系统崩溃。最后,由于一系列问题,只能选择重装系统。
总结教训:避免直接跨版本升级Glibc,尤其是作为root用户,务必在备份后进行,并考虑在低版本环境中编译应用或选择特定版本的安装包。更多详细步骤和经验可以在后续文章中找到。
手把手搭建qemu+buildroot开发环境
本文将指导您从零开始构建QEMU+Buildroot的ARM开发环境,以简化移植工作并自动构建定制化的嵌入式根文件系统。无需繁琐的移植,只需通过menuconfig配置所需的特性,Buildroot将自动处理源码下载、编译和打包,省去了大量手动操作。环境准备
在Windows 上,借助VMware ,app源码开发语言选择Ubuntu .作为虚拟机系统,设定为位的Cortex-a处理器。依赖安装
为了搭建环境,首先需要安装QEMU 8.2.0和Linux Kernel 5..,以及AARCH的工具链。从QEMU官网获取8.2.0源码,确保Python版本大于3.8和glib2.0环境。配置与编译
在已安装依赖的前提下,进入QEMU源码目录,配置并编译。配置过程中,针对ARM架构进行定制。接着,下载并解压Buildroot ..1,配置kernel,关注关键选项。 执行buildroot编译,生成Image、roots.ext4和start-qemu.sh文件。在start-qemu.sh中,需修改第行,登录console时使用root账户。启动与操作
启动QEMU,登录后,可通过组合键退出当前会话(CTRL + a, x)。作者潘小帅,Linux技术爱好者,欢迎关注他的微信公众号“Linux随笔录”,持续获取更多技术分享。GCC 源码编译安装
前言
本文主要介绍如何在特定条件下,通过源码编译安装GCC(GNU Compiler Collection)4.8.5版本。在Linux环境下,特别是遇到较老工程代码和低版本GCC适配问题时,网络仓库不可用,可通过下载源码进行本地编译安装。文章总结了该过程的步骤,以期帮助读者解决类似需求。
Linux系统版本:SUSE Linux Enterprise Server SP5 (aarch) - Kernel \r (\l)
GCC版本:gcc-4.8.5
步骤如下:
1,源码下载
直接在Linux终端执行:wget ftp.gnu.org/gnu/gcc/gcc...
或手动下载:ftp://gcc.gnu.org/pub/gcc/infrastructure
选取对应的gcc版本下载。
2,解压并进入目录
解压下载的tar包:tar -jxvf gcc-4.8.5.tar.bz2
进入解压后的目录:cd gcc-4.8.5
3,配置依赖库
联网情况下:cd gcc-4.8.5/
./contrib/download_prerequisites
无法联网时,手动下载依赖库(如mpfr、gmp、mpc)并上传到指定目录,然后分别解压、重命名并链接。
4,创建编译存放目录
在gcc-4.8.5目录下执行:mkdir gcc-build-4.8.5
5,生成Makefile文件
cd gcc-build-4.8.5
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
推荐配置时,根据环境调整参数,如X_环境下的`--disable-libsanitizer`。
6,执行编译
make(可能耗时较长)
解决可能出现的问题,如libc_name_p和struct ucontext uc,通过参考gcc.gnu.org/git或直接覆盖相关文件。
7,安装GCC
在gcc-build-4.8.5目录下执行:make install
安装完成后,可直接解压并安装。
8,配置环境变量
执行命令:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/gcc-4.8.5/mpc:/root/gcc-4.8.5/gmp:/root/gcc-4.8.5/mpfr
确保路径一致,执行 source /etc/profile 使环境变量生效。
9,检查安装情况
通过`gcc -v`和`g++ -v`验证GCC版本。
,库升级
遇到动态库未找到问题时,需升级gcc库,通过查找和替换最新库文件解决。
,卸载系统自带的gcc
以root用户执行:rpm -qa |grep gcc | xargs rpm -e --nodeps
,修改ld.so.conf文件
编辑文件:vi /etc/ld.so.conf,在最下面添加实际路径,如/usr/local/lib和/usr/local/lib。
执行 ldconfig /etc/ld.so.conf。
,修改GCC链接
确保GCC及其相关工具的正确链接,使用`ll /usr/bin/gcc*`和`ll /usr/bin/g++*`检查链接结果。
至此,GCC源码编译安装流程完成,可满足特定环境下的GCC版本需求。
AARCH 开发系列1: AARCH 环境搭建
在个人电脑的x环境下搭建AARCH开发环境,对有兴趣深入Arm相关技术的开发者来说是至关重要的。本文指导你如何快速搭建此开发环境,以适应Arm服务器的迅猛发展需求。
通过访问docker-hub,可以找到名为dev4arm/aarch:ubuntu_._sve的Docker镜像,这为AARCH环境搭建提供了方便。通过提供的命令,你可以轻松进入AARCH开发环境,或者按照附录中的步骤,手动创建开发环境。
尽管官方发布的gcc版本尚不支持SVE intrinsics,但在GitHub上,一个名为gcc-mirror的仓库提供了包含aarch/sve-acle-branch分支的源代码。通过手动编译此分支的源代码,可以生成支持SVE intrinsics的gcc编译器,更多详情请查阅相关参考资料。本文所构建的AARCH开发环境已内嵌一个支持SVE intrinsics的gcc编译器,以满足这一需求。
使用此内置的gcc_sve目录下的支持SVE intrinsics的编译器,你可以在开发环境中完成所有代码的测试、编译。实验代码已包含在dev4arm/aarch:ubuntu_._sve Docker镜像中。
接下来,我们将逐步介绍在AARCH环境中执行基本汇编编译与运行、Neon、Neon intrinsics、SVE以及SVE intrinsics的编译与运行。
在~/work/aarch_asm目录下,你可以找到一个用于测试AARCH基本汇编的内置程序。通过执行makefile,可以获取相关结果。Neon的测试代码位于~/work/neon目录下,提供了关于Neon编译与运行的实例。接下来,我们关注Neon intrinsics的编译与运行,以及SVE相关的编译与运行。
SVE的测试代码位于~/work/sve目录下,通过SVE指令计算字符串长度的示例展示了SVE汇编编译与运行的过程。在SVE intrinsics部分,我们提供了一个通过SVE intrinsics进行批量运算的示例。
对于希望手动构建AARCH开发环境的读者,附录提供了必要的指导,包括下载附件和在命令行上执行特定命令以创建环境。
在参考文献中,我们引用了几个关键资源,帮助读者深入了解AARCH开发环境搭建的各个细节,包括SVE在QEMU的使用、交叉编译支持SVE ACLE的gcc、qemu-user-static release以及Arm编译工具链下载等。
RK开发笔记(一):基于方案商提供的宿主机交叉编译Qt5..
本文旨在详细记录RK开发车机时,针对未预编译Qt5..版本的宿主机环境,进行自行交叉编译Qt系统的操作过程。通过以下步骤,我们可以实现Qt系统的顺利安装与使用,为后续的开发工作奠定基础。
首先,我们对宿主机进行准备。下载并运行宿主机,注意该环境仅提供SDK,但未包含交叉编译Qt的版本。
接下来,下载Qt5..的开源软件,作为后续编译的基础。同时,下载并准备交叉编译工具链以及目标编译系统所需的sysroot文件系统,确保所有依赖均已就绪。
正式进入交叉编译Qt的流程。我们首先解压编译工具链,通过对比发现,虽然单独提供的工具链中缺少bin目录下的g++工具,但实际开发板提供的SDK中包含该组件,因此我们选择复制SDK中的bin目录内容,以确保g++工具可用。
为了方便后续操作,建立一个env.sh脚本,引入交叉编译工具链。通过source env.sh命令激活环境,确保路径正确设置,便于后续编译操作。注意,环境配置时需与方案提供的平台相匹配,确保编译过程顺利进行。
紧接着,解压qt源码并进入配置阶段。在qt-everywhere-src-5..目录下,修改平台配置文件,指定编译器名称、配置选项以及目标平台等关键信息。使用bash脚本方式构建配置文件,简化操作流程,如:
#!/bin/bash
./configure \
-prefix /home/ht/work/build-qt5.. \
-sysroot /home/ht/work/sysroot \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch-gnu-g++ \
-no-opengl \
-no-feature-completer \
-verbose
配置完成并保存后,运行脚本执行编译操作。在编译过程中,可能出现路径错误等问题,如用户路径设置问题,应根据实际情况进行调整。
编译工作完成后,进行Qt的安装。通过执行make install命令,将Qt系统安装至指定目录,至此,Qt5..的交叉编译过程顺利完成。
2024-12-23 07:07
2024-12-23 06:02
2024-12-23 05:38
2024-12-23 05:19
2024-12-23 04:41