解决交叉编译64位Qt5.15中遇到的问题

21 篇文章 0 订阅
8 篇文章 10 订阅

运行demo时出现一个问题:
QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed

原因是缺少iconv库,解决方案如下。

1、下载源码

http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz

2、解压缩,并在根目录中创建文件autoconfig.sh如下:

./configure \
CC=/请替换为交叉编译器目录/aarch64-none-linux-gnu-gcc \
CXX=/请替换为交叉编译器目录/aarch64-none-linux-gnu-g++ \
--prefix=/opt/libiconv_install/ \
--host=arm-linux \
--enable-shared \
--enable-static \
--with-sysroot=/请替换成工具链中的根文件系统目录

3、make -j8

   出现如下错误:

./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function); did you mean ‘fgets’?
 1010 | _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
      | ^~~~~~~~~~~~~~~
Makefile:914: recipe for target 'progname.o' failed
make[2]: *** [progname.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/mnt/data/libiconv-1.14/srclib'
Makefile:865: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/mnt/data/libiconv-1.14/srclib'
Makefile:33: recipe for target 'all' failed
make: *** [all] Error 2

将文件libiconv-1.14/srclib/stdio.in.h中的这一行

_GL_WARN_ON_USE (gets, “gets is a security hole-use fgets instead”)

规换为:

#if defined(GLIBC) && !defined(UCLIBC) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, “gets is a security hole - use fgets instead”);
#endif

4、重新make -j8

5、make install

6、相关库将安装到/opt/libiconv_install,将该目录压缩-->传到开发板-->解压。

7、执行如下命令:

root@my-dev:~# export LD_PRELOAD=/opt/libiconv_install/lib/preloadable_libiconv.so

8、再运行Demo,一切正常。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
编译Qt 5.15.x版本的步骤如下: 1. 首先确保你已经安装了必要的软件包,包括C++编译器(例如GCC),Python 2.7.x,Perl以及其他构建工具(例如make)。 2. 下载Qt 5.15.x的源代码包(例如QtSDK),可以从Qt官方网站上下载。 3. 解压下载的源代码包到你选择的目录,例如在终端执行以下命令解压到当前目录:tar -xvf qt-everywhere-src-5.15.x.tar.xz。 4. 创建一个用于构建的目录,例如在终端执行以下命令创建一个名为"build"的目录:mkdir build。 5. 进入构建目录:cd build。 6. 配置编译选项,执行以下命令:../qt-everywhere-src-5.15.x/configure -prefix /usr/local/qt5。 在上述命令,-prefix选项指定了Qt的安装路径。你可以根据需要修改该路径,例如将路径更改为你自己的用于安装Qt的目录。 7. 编译代码,执行以下命令:make。 这个过程可能会持续几个小时,具体时间取决于你的电脑硬件性能。 8. 安装编译好的Qt,执行以下命令:make install。 9. 完成后,你可以在指定的安装路径找到已编译的Qt 5.15.x。 例如,在上述步骤通过-prefix选项指定了安装路径为/usr/local/qt5,则你可以在/usr/local/qt5找到安装好的Qt。 这是一个大致的步骤指南,具体配置选项和命令可能会有所不同,这取决于你的系统环境和需求。在进行实际操作之前,建议参考Qt官方文档或相关教程,以便了解更多详细信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值