2014-04-04 4 views
1

Linux에서 QT 5.2.1 응용 프로그램을 실행하는 데 문제가 있습니다 (모두 가장 단순한 "hello world"가 코드 1로 종료됩니다).ICU가 지원되는 Qt 5.2.1 : 모든 응용 프로그램이 코드 1로 종료합니다.

TI (SDK 6.00.00)가 제공하는 툴체인을 사용하여 Linux 임베디드 장치 (TI AM335x)에 대해 QT 5.2.1을 교차 컴파일했습니다. 또한 ICU 지원을 추가했습니다 (QtWebkit도 교차 컴파일 할 계획이고 ICU는 필수 종속성이기 때문에).

그래서, 이전에 ICU (버전 52)를 구축 한 후 나는 다음과 같은 구성을 사용하여 QT를 컴파일 교차 :

./configure -prefix /opt/qt5 -opensource -confirm-license -platform linux-g++ 
-icu -I /opt/icu/include -L /opt/icu/lib -R /opt/icu/lib -no-cups -no-nis 
-no-dbus -no-pch -no-accessibility -no-gtkstyle -no-xcb -eglfs -no-directfb 
-qpa eglfs-xplatform linux-arm-gnueabihf-g++ -opengl es2 -nomake examples 
-nomake tests -v 

(이전에 내장 된 ICU 라이브러리는/옵션/ICU/lib에있는).

QT는 평소대로 make && make install을 사용하여 컴파일되었습니다.

그런 다음 TI (SDK 6.00.00)에서 제공하는 것과 동일한 도구 체인을 사용하여 크로스 컴파일 된 새로운 QT 버전에 대한 응용 프로그램을 컴파일하기 위해 개발 컴퓨터 (Ubuntu 12.04 LTS 32 비트)에 QT Creator IDE를 구성했습니다.

내 콘솔 기반 "hello, world"응용 프로그램이 컴파일 된 다음 장치에 배포 할 수 있습니다 (QT가 자체 라이브러리를 찾도록 요구 된 모든 환경 변수 설정).

하지만 여기에 문제를을 제공 :

응용 프로그램은 항상 코드 1로 종료 어떠한 출력을 생성하지 않습니다.

내 응용 프로그램이 strace 인 경우 strace -o trace.log ./TestConsole을 실행하면 here이라는 출력이 생성됩니다.

다른 말로하면 libicudata.so.52을로드 한 직후에 누군가가 exit_group(1)을 호출하는 것처럼 보입니다.

하지만 누가 그것을 부르고 있습니까? 그리고 왜?

ICU를 지원하지 않고 QT를 크로스 빌드하면 다음과 같이 컴파일하고 실행할 수 있습니다. ICU와 관련된 것으로 생각됩니다. 그에 대한 아이디어가 있습니까?

+0

엄격하게 ICU 관련 문제가 발생했다면 질문을 리팩토링하고 새 제목 [여기] (http://stackoverflow.com/questions/22859444/cross-compiled-icu4c-does)에 게시했습니다. -not-work-all-applications-exit-with-code-1) –

+0

그런 다음이 질문을 삭제하십시오. –

+0

@KubaOber : 질문을 여기 남겨 두는 것이 훨씬 더 유용하다고 생각합니다. 문제가 ICU로 인한 것인지 결정하기가 어려웠 기 때문에 ... 누군가가 QT를 컴파일하려고합니다. (이 주제는 질문) 그리고 같은 문제가 있습니다 ... ICU 관련 질문은하지 않지만 QT 관련 질문은이 페이지로 이동하여 올바른 질문에 대한 참조를 찾습니다. 내가 잘못? –

답변

0

문제점을 발견 : 문제는 ICU 관련입니다.

대상 플랫폼에서/opt/icu/bin/icuinfo 도구를 실행하더라도 시작시 1로 종료됨을 알게되었습니다 (전체 strace 로그 here을 찾을 수 있음).

새로운 ICU 관련 질문이 here으로 게시되었으므로이 질문을 닫을 수 있다고 생각합니다.

관련 문제