arm-linux-gcc踩坑1

嵌入式实验要用到交叉编译arm-linux-gcc,其中遇到一些问题,记录如下。

1.安装交叉编译器并更新环境:
export PATH=$PATH:/usr/local/arm/4.6.2/bin/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin
source ~/.bashrc时提示:找不到source命令,找到如下解决方案:

https://blog.csdn.net/u013895853/article/details/81676379
普通用户sudo su 和 sudo -s都是切换到root用户,不同的是:

sudo su 环境用的是目标用户(root)的环境
root后再执行。

验证是否生效

arm-linux-gcc –v

解决。
另一篇文章没有验证,也不理解

https://www.cnblogs.com/sewen-H/p/13233530.html

2.编译示例程序:

arm-linux-gcc –g –c main.c

提示:
arm-linux-gcc: error: –g: No such file or directory
arm-linux-gcc: error: –c: No such file or directory
查找发现:

https://www.cnblogs.com/liangning/p/4273383.html
搞了半天,才发现是ubuntu版本的问题。本人的ubuntu是64位,而下载的这些交叉编译器是32位的。因此需要安装ia32-libs库

下面安装32位运行库:

https://blog.csdn.net/wanxuexiang/article/details/83898397
通过下面两条命令进行安装即可:
1、apt-get install lib32ncurses5 ​
2、apt-get install lib32z1

在执行apt-get install lib32ncurses5 ​时报错,

正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
E: 无法定位软件包

尝试另一种办法:

https://blog.csdn.net/lv75543255/article/details/90754684?utm_medium=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-17.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-17.nonecas

要在64位多架构Ubuntu系统上运行32位可执行文件,您必须添加i386架构
(1)添加i386架构
sudo dpkg --add-architecture i386
(2)更新源信息
sudo apt update
(3)安装相应的32位库,库名后面加上:i386,比如libc6:i386, libstdc++6:i386,libncurses5:i386
sudo apt install libc6:i386 libstdc++6:i386 libncurses5:i386
(4)如果还需要其他库,请按需安装即可

在执行sudo apt update时报错:

命中:1 http://mirrors.aliyun.com/ubuntu bionic InRelease
命中:2 http://mirrors.aliyun.com/ubuntu bionic-updates InRelease
命中:3 http://mirrors.aliyun.com/ubuntu bionic-backports InRelease
命中:4 http://mirrors.aliyun.com/ubuntu bionic-security InRelease
命中:5 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic InRelease
命中:6 http://ppa.launchpad.net/wireshark-dev/stable/ubuntu bionic InRelease
获取:7 http://packages.ros.org/ros/ubuntu bionic InRelease [4,680 B]
错误:7 http://packages.ros.org/ros/ubuntu bionic InRelease
下列签名无效: EXPKEYSIG F42ED6FBAB17C654 Open Robotics info@osrfoundation.org
已下载 4,680 B,耗时 2秒 (2,124 B/s)
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
有 308 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:http://packages.ros.org/ros/ubuntu bionic InRelease: 下列签名无效: EXPKEYSIG F42ED6FBAB17C654 Open Robotics info@osrfoundation.org
W: 无法下载 http://packages.ros.org/ros/ubuntu/dists/bionic/InRelease 下列签名无效: EXPKEYSIG F42ED6FBAB17C654 Open Robotics info@osrfoundation.org
W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。

查找解决方法:

http://t.zoukankan.com/liuzhenbo-p-11032733.html

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6ED91CA3AC1160CD

将其中密钥还为验证不通过的密钥,执行。
结果:

Executing: /tmp/apt-key-gpghome.sS2MmDyFUN/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
gpg: 密钥 F42ED6FBAB17C654:“Open Robotics info@osrfoundation.org”1 个新的签名
gpg: 合计被处理的数量:1
gpg: 新的签名:1

再次执行sudo apt update等命令发现

libc6:i386 已经是最新版 (2.27-3ubuntu1.4)。
libc6:i386 已设置为手动安装。
libncurses5:i386 已经是最新版 (6.1-1ubuntu1.18.04)。
libncurses5:i386 已设置为手动安装。
libstdc++6:i386 已经是最新版 (8.4.0-1ubuntu1~18.04)。
libstdc++6:i386 已设置为手动安装。

方向不对,继续查找解决办法:

https://blog.csdn.net/qq_41547890/article/details/116672321

原因:
从上面这个报错其实也知道原因了,就是在“更新源地址平台上”找不到相应的“lib32ncurses5”软件包。找不到软件包通常是软件包名输入错误,或者说,没有这个软件包了,有些软件包可能会被移除或被其它的软件包替代了等等。

解决方法:
apt-get install lib32ncurses5改为apt-get install lib32ncurses5-dev
运行成功。

还遇到另一问题:

module ‘enum’ has no attribute ‘IntFlag’
在这里插入图片描述

查找:

https://www.cnblogs.com/guohongwei/p/10870053.html

直接卸载:

pip uninstall enum34

没有解决。

https://www.jianshu.com/p/9c8237bb3598

查找之后,路径下并没有enum。

https://www.e-learn.cn/content/python/2181404

查询发现,是PYTHONPATH的设置错误,在.bashrc中存留有以前使用python2时留下的配置,导致python3不能找到正确的enum位置,注释掉bashrc中相关语句后,清空$PYTHONPATH变量即可:

 unset PYTHONPATH 

成功解决。

继续尝试编译。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值