当前位置: 首页 > news >正文

给虚拟机linux系统安装交叉编译工具链

我们在电脑上写的代码编译生成的是X86架构的二进制文件,只能在X86平台上运行,而开发板是ARM架构因此需要安装交叉编译链工具,这样在电脑上写的代码交叉编译之后生成的是ARM架构的二进制文件。

绿色的字眼是与本文无关的只是这样有助于我们的使用

1.下载arm-linux-gnu5.4.0.rar

通过网盘分享的文件:arm-linux-gnu5.4.0
链接: https://pan.baidu.com/s/1TxfQuqGBmOKKxgqAZgl6gg?pwd=k72v 提取码: k72v
解压备用

下载完成后先解压,再改压缩包的格式加上.xz,改成arm-linux-gnueabi-5.4.0.tar.xz名字


2. 把arm-linux-gnueabi-5.4.0.tar.xz 复制到虚拟机/WSL的共享路径下

3. 把 .xz 文件进行解压 (-J)

在arm-linux-gnueabi-5.4.0.tar.xz目录下使用下面的命令

$sudo tar -Jxvf arm-linux-gnueabi-5.4.0.tar.xz -C /

 4. 添加环境变量

vim ~/.bashrc在文件末尾添加
export PATH=/usr/local/arm/5.4.0/usr/bin:$PATH

5. 刷新一下配置文件

$source ~/.bashrc

 6. 检查是否安装成功

arm-linux-gcc -v // 查看版本信息

成功会出现下面这个信息

7. 使用交叉编译器进行编译程序

gcc Hello.c -o Hello // 编译的程序只能在X86(电脑)运行
arm-linux-gcc Hell.c -o Hello // 编译的程序只能在ARM(开发板)运行

如何使用Makefile 

修改Makefile 把CC换成 arm-linux-gcc

 换了之后使用make出现下面的错误

1 rm-linux-gcc src/Output.c -o src/Output.o -I./inc -c
2 /usr/local/arm/5.4.0/usr/bin/../libexec/gcc/arm-none-linux-gnueabi/5.4.0/cc1:
3 error while loading shared libraries: libmpfr.so.4:
4 cannot open shared object file: No such file or directory

 原因是系统中使用的 so.6 的库,但是我们的编译用的是so.4

如何知道我们用的是哪个库?

cd /usr/lib
find -name "libmpfr*"

解决方法就是我们生成一个链接名字为 libmpfr.so.4指向libmpfr.so.6这样系统就能找到了

$sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4

 

http://www.lryc.cn/news/440731.html

相关文章:

  • Redhat 7,8系(复刻系列) 一键部署Oracle21c-xe rpm
  • Web植物管理系统-下位机部分
  • leetcode169. 多数元素
  • 从大脑图谱/ROI中提取BOLD信号
  • Java-数据结构-优先级队列(堆)-(一) (;´д`)ゞ
  • 工厂模式(二):工厂方法模式
  • 【洛谷】P11036 【MX-X3-T3】「RiOI-4」GCD 与 LCM 问题 的题解
  • MyBatis系统学习(三)——动态SQL
  • get_property --Cmakelist之中
  • 【Redis】Redis 典型应用 - 分布式锁原理与实现
  • Pybind11的使用
  • 鸿蒙-沉浸式pc端失效
  • 【资料分析】刷题日记1
  • nodejs+express+vue教辅课程辅助教学系统 43x2u前后端分离项目
  • 96-javahashmap底层原理
  • AI逻辑推理入门
  • 力扣3014.输入单词需要的最少按键次数I
  • 【Git】远程仓库
  • 苹果手机铃声怎么设置自己的歌?3个方法自定义手机铃声
  • 828华为云征文|华为Flexus云服务器搭建Cloudreve私人网盘
  • 【AI学习】AI绘画发展简史
  • 使用LangChain创建简单的语言模型应用程序【快速入门指南】
  • 嵌入式人工智能项目及人工智能应用项目——大合集列表查阅
  • 心觉:成功学就像一把刀,有什么作用关键在于使用者(一)
  • GAMES101(10节,几何)
  • Android 中音频焦点的使用场景及示例
  • 2. JDBC驱动是什么?如何在Java项目中配置MySQL的JDBC驱动?
  • Nginx 跨域 + 无法设置 Cookie 解决办法
  • 北森笔试测评之言语理解到底难不难
  • Ubuntu下beanstalkd无法绑定局域网IP地址以及消息队列beanstalkd上的error: JOB_TOO_BIG的解决