Skip to content

cross comple to arm

KerwinKoo edited this page Dec 28, 2015 · 5 revisions

Qt5.4 交叉编译

config配置:


#!/bin/sh ./configure -v -prefix /opt/Qt5.4.0_arm/5.4/Src/_install -release -make libs -xplatform linux-arm-gnueabi-g++ -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -no-opengl -no-sse2 -no-nis -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomake examples -I /usr/local/tslib/include -L /usr/local/tslib/lib


在ARM中运行时报错:

QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed

解决方案:

重新下载一个libiconv-1.14

./configure --prefix=$PWD/out --host=arm-none-linux-gnueabi
make
make install

然后把out/lib/preloadable_libiconv.so拷贝到板子的/lib,并在板子的文件系统增加一个环境变量

export LD_PRELOAD=/lib/preloadable_libiconv.so

编译过程可能还有个错误:

修改libiconv-1.14的文件: srclib/stdio.in.h

./stdio.h:1010:1: error: 'gets' undeclared here (not in a function)

用下面的这个补丁:

--- srclib/stdio.in.h.orig      2011-08-07 16:42:06.000000000 +0300
+++ srclib/stdio.in.h   2013-01-10 15:53:03.000000000 +0200
@@ -695,7 +695,9 @@
 
-_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
 #endif

[[TOC]]

Clone this wiki locally