U-BOOT编译中的软浮点soft-float问题(R_ARM_PLT32 __div0)

本文介绍了解决使用arm-linux-gcc-3.4.1和arm-linux-2.95.3交叉编译工具编译U-BOOT-1.1.6时遇到的错误方法。通过去除soft-float选项及重新制作crosstools,最终实现了成功编译。
 
使用arm-linux-gcc-3.4.1和arm-linux-2.95.3交叉编译工具编译U-BOOT-1.1.6时,总是提示如下类似错误信息。
/lib_arm/_udivsi3.S:67: relocation truncated to fit: R_ARM_PLT32 __div0
lib_arm/_umodsi3.S:79: relocation truncated to fit: R_ARM_PLT32 __div0
上网搜索了一下,发现出现这个问题的还不少。网友给出的解决方法是:
1)去除编译选项soft-float
2) 重新制作交叉编译工具
试了一下,发现去除soft-float后,还是不能解决这个问题。按照网友vxworks尔雅的方法,重新制作了cross tools,步骤如下:
1)以root登陆
2)创建目录/opt/crosstool/并修改并修改其owner。是因为此crosstool不能以root安装,而须以username安装,安装过程会读写此目录,故需要修改属主。
3)以用户username登陆
4) 创建目录/home/username/downloads这个目录将来用于自动从网上下载gcc, binutilty,glibc等。如果自己已经下载了这些软件包,也放在这个目录下,这样就不用程序自动从网上下载了。
5) 从http://kegel.com/crosstool/下载crosstool-0.43.tar.gz到目录/opt/crosstool
6) cd /opt/crosstool tar xzvf crosstool-0.43.tar.gz
7) 进入crosstool-0.43目录,执行sh demo-arm-softfloat.sh
经过漫长的等待,最后生成新的cross tool chains。修改U-BOOT的Makefile文件,指定cross tool。
make sbc2410x_config
make all
终于可以编译成功了。 
在`real_esrgan`环境中,使用`pip install skimage`报错`subprocess-exited-with-error`,并提示安装`scikit-image`,这是因为`skimage`只是`scikit-image`的别名,实际安装应使用`scikit-image`这个包名。可以使用以下命令进行安装: ```bash pip install scikit-image ``` 若安装仍失败,可尝试升级`setuptools`和`pip`,命令如下: ```bash pip install --upgrade setuptools pip install --upgrade pip ``` 这是因为`setuptools`是Python的一个开源包管理器,用于管理Python项目的依赖库,升级该库的版本通常可以解决由于版本不兼容而导致的一些问题[^3]。 对于`from skimage import img_as_float32, img_as_ubyte`代码,这是从`scikit-image`库中导入两个函数。`img_as_float32`函数用于将图像数据类型转换为`float32`类型,`img_as_ubyte`函数用于将图像数据类型转换为`uint8`类型(无符号8位整数)。以下是使用示例: ```python from skimage import data, img_as_float32, img_as_ubyte import matplotlib.pyplot as plt # 加载示例图像 image = data.camera() # 将图像转换为float32类型 float_image = img_as_float32(image) # 将图像转换为uint8类型 ubyte_image = img_as_ubyte(float_image) # 显示原始图像和转换后的图像 fig, axes = plt.subplots(1, 3, figsize=(15, 5)) axes[0].imshow(image, cmap='gray') axes[0].set_title('Original Image') axes[1].imshow(float_image, cmap='gray') axes[1].set_title('Float32 Image') axes[2].imshow(ubyte_image, cmap='gray') axes[2].set_title('Uint8 Image') plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值