转载 Linux交叉编译环境搭建和内核编译
(我这里是全程使用root用户安装的,有些步骤会造成默认安装路径的不同,若对linux不熟练请谨慎使用root!)
安装交叉编译工具
a)要想在x86桌面平台对ARM架构的嵌入式CPU编译程序就需要用到交叉编译工具链,而交叉编译工具链一般都是在Linux环境下使用的,所以我们就需要在Ubuntu下安装:
注:本文使用的交叉编译工具链版本为 2012.03由嵌入式老师提供的,其中
xilinx-2012.03-79-arm-xilinx-linux-gnueabi.bin是编译Linux内核需要的交叉编译器
xilinx-2012.03-83-arm-xilinx-gnueabi.bin是编译standalone应用程序需要的交叉编译器
b)因为我安装了虚拟机工具,所以我可以直接在Windows平台下直接复制xilinx-2012.03-79-arm-xilinx-linux-gnueabi.bin并粘贴到虚拟机的用户桌面
c)接着我需要执行这个交叉编译工具安装包,和Windows平台安装程序不同的是,我们需要在Ubuntu的终端界面中进行命令行的安装启动。同样的我们启动终端界面然后依次输入如下命令:
如下图所示,我们在执行这个bin文件时会遇到一个64位操作系统的问题,并给出了一个解决此问题的网址:
d)在浏览器中打开这个网址,我们会看到问题的描述和如何解决:
e)然后我们安装该说明,在命令行依次输入如下命令:
sudo apt-get update
在输入登录密码后,Ubuntu便开始执行软件库更新操作:
接着输入:sudo apt-get install libgtk2.0-0:i386 libxtst6:i386 gtk2-engines-murrine:i386 \
lib32stdc++6 libxt6:i386 libdbus-glib-1-2:i386 libasound2:i386
f)然后Ubuntu就会自动去服务器上下载所需的软件和库文件并安装和设置:这步骤不贴图了……
g)之后再在同一终端下重新执行一遍bin文件,这次又提示了一个关于shell的错误并直接给出了解决办法,按照其提示,在终端中输入:.sudo dpkg-reconfigure -plow dash,在弹出的图形界面中选择No
h)再次执行bin文件,这是便能看到在Windows平台下最熟悉的图形向导安装界面弹出:
i)首先在欢迎界面中直接点Next继续:
j)接着选择同意安装条款,并点Next继续:
k)重要提示这里直接点Next继续:
i)选择典型安装即可(字体蓝色高亮表示选中)并Next继续:
m)保持默认路径不变并记住此路径,后面配置的时候还会用到:
n)在PATH环境变量这里选择第二项,Next继续:
o)在创建快捷方式这里选择默认选项(第二项),Next继续:
p)最后点击Install开始安装交叉编译工具链:
q)此时能看到安装进度条显示
r)最后勾选上手指南选项,该指南会告诉我们如何配置该交叉编译工具链,Next继续
s)点击Done完成交叉编译工具链的安装
t)同时上手向导指南也会出现,我们已完成安装,需要对其进行一步的环境变量设置
这里的installdir指的就是交叉编译工具链的安装路径!
首先我们找到该安装路径如图所示:
接着打开一个终端窗口,使用nano或vim两个常用的文本编辑器(根据个人喜好),
nano .bashrc
在 .bashrc文件的最后一行,添加如下两行然后保存:
注意:这里添加的是安装路径,看好自己是安装在了root里还是home里。
之后输入 source .bashrc
arm-xilinx-linux-gnueabi-g++ -v
u)当看到如下图所示的gcc version 4.6.3的版本号显示时,即表示交叉编译环境已经搭建成功!
哈哈哈哈!
内核源码获取
a)要从GitHub网站获取源码,就需要安装git工具。所以在Ubuntu下新开一个终端界面,然后输入sudo apt-get install git,输入密码后,Ubuntu会从服务器上检索该软件,并提出需要下载安装,输入y同意后开始下载安装。
安装完成后接着在终端中输入 git clone https://github.com/Digilent/linux-digilent.git
接着git就会从GitHub网站上去下载由Digilent针对其Zynq产品维护的Linux内核源代码,下载完成后,我们就能在当前目录下看到一个linux-digilent的目录,如图所示,这里面就是我们一会儿要编译的Linux内核源码。
配置并编译内核源码
现在开始编译并编译内核源码,首先我们要对用户环境变量再编辑一次。新开一个终端界面,在 .bashrc文件的最后一行输入如下两段,保存:
接着在终端输入 source .bashrc
echo $CROSS_COMPILE
echo $ARCH
如果能看到终端分别输出arm-xilinx-linux-gnueabi-和arm,则表示交叉编译工具链前缀和目标编译平台已经生效,如图:
然后我们就需要切换到内核源码所在目录配置内核,在终端输入
cd linux-digilent
make digilent_zed_defconfig
此时我们能看到一个针对Zedboard的初始默认配置文件被写入到.config文件:
(这里遇到了一个错误待解决)
错误的原因应该是下载的内核版本缺失了该文件,为此我找到了一个非常草率的解决办法……
我找到了目录下的另外一个文件来进行内核编译
接着输入 make menuconfig
此时如果出现错误提示,就输入该命令来安装ncurses-dev程序包
sudo apt-get install ncurses-dev
然后我们就进入到了linux内核的菜单配置界面,如图所示
我们可以在菜单配置界面的左上角看到该配置是读取刚写入的 .config文件,并且编译平台是arm,和我们在$ARCH里指定的一样,你可以根据自己需要来进行配置,这里选择保持默认的配置,用键盘切换到Exit回车退出。
完成内核编译前的最终配置:
接着在终端中输入如下命令:make 就可以看到开始编译内核,整个编译过程大概需要10到15分钟。
当看到如下输出时,便表示内核镜像文件已经编译完成,并保存在 arch/arm/boot目录下,其中Image文件是未压缩的内核镜像,zImage是压缩过的内核镜像:(不同的系统文件名Image可能略有差异)
个人感觉应该是编译成功了……(⊙o⊙)…
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)