2017-11-07 35 views
0

팔 플랫폼 용 QtWebengine으로 Qt5.9.1을 빌드하려고합니다. 다음은 아키텍처에 전달하는 일부 아키텍처 기반 인수입니다.QtWebengine에서 opus 및 실크 코덱을 사용하여 빌드 오류가 발생했습니다.

QMAKE_CFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 
QMAKE_CXXFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 

기본적으로 빌드가 이러한 값을 처리하는 것을 볼 수 있습니다.

-mfloat-abi=hard -mtune=generic-armv7-a -mfpu=vfpv3-d16 -mthumb 

THIS은 내가 직면 한 오류입니다.

내가 아는 한, cortex-a9 네온은 선택 사항이며 특정 SoC는 네온을 지원하지 않습니다. 는 또한 -print-멀티 LIB 내가 mkspecs 이러한 세 가지 아키텍처 인수를 전달 시도이 arm400 - 리눅스-g ++ - 인쇄 - 멀티 LIB

armv5te_arm9;@mcpu=arm926ej-s 
a9;@mcpu=cortex-a9 
a7;@mcpu=cortex-a7 
armv5te_arm9_soft;@[email protected]=soft 
armv5te_arm9_vfp;@[email protected][email protected]=vfp 
a9_soft;@[email protected]=soft 
a9_softfp_vfp;@[email protected][email protected]=vfp 
a9_softfp_vfpv3-d16;@[email protected][email protected]=vfpv3-d16 
a7_soft;@[email protected]=soft 
a7_softfp_vfpv4;@[email protected][email protected]=vfpv4 
a7_softfp_neon-vfpv4;@[email protected][email protected]=neon-vfpv4 
a7_hard_neon-vfpv4;@[email protected][email protected]=neon-vfpv4 

에게 제공합니다. 이를 위해

QMAKE_CFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=soft 
QMAKE_CXXFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=soft 

내가 내가 이러한 인수

-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfp 

-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv3-d16 

를 전달하는 시도

"arm400-linux-g++: error: -mfloat-abi=soft and -mfloat-abi=hard may not be used together". 

있어하지만 같은 효과를 가지고 있었다.

libxxxx.a(yyyyy.o) uses VFP register arguments, libQt5WebEngineCore.so.5.9.1 does not 

여기에서 옵션이 부족합니다. 이 문제가 왜 발생합니까?

답변

0

소스 코드와 동일한 VFP 옵션을 사용하여 모든 라이브러리를 빌드해야합니다.

ATPCS (ARM-Thumb 프로 시저 호출 표준)에 따르면 float 매개 변수는 사용 가능한 경우 VFP 레지스터에 의해 전달됩니다. 그렇지 않으면 ARM 정수 레지스터를 통해 전달됩니다.

lib A가 soft-float 옵션으로 컴파일 된 경우 lib B에서 ABI 충돌로 인해 함수를 호출 할 수 없으며 그 반대의 경우도 마찬가지입니다.

특정 lib의 소스 코드가 아니라 이진 파일 인 경우 유일한 옵션은 다른 프로젝트 빌드 옵션을 lib 디렉토리와 일치시키는 것입니다.

그러나 다양한 빌드 옵션으로 다양한 버전의 라이브러리를 찾을 수있는 기회는 좋습니다.

+0

그러나 제 경우에는'-mfloat-abi = softfp'를 전달하여 softfp를 사용하도록 빌드하려고 시도했습니다. 여전히 오류가있는 것은'-mfloat-abi = hard'입니다. 닌자 빌드가 이러한 가치를 수정하는 방법을 실제로 이해할 수 없습니다. lib A와 lib B는 모두 하나의 빌드에 있습니다. –

+0

@Kar 프로젝트에 어셈블리 파일이 있습니까? 어셈블리에서는 헤더의 전역 빌드 옵션을'.fpu' 지시어로 대체 할 수 있습니다. 게다가 SoC가 VFP를 특징으로한다면, 성능면에서 세계적인 차이가 있기 때문에 VFP를 사용해야합니다. –

+0

나는 [FILE] (https://pastebin.com/JiGavCB4)을 발견했는데, 이는 qtwebengine에서 GN 빌드에 대한 이러한 주장을 수정 한 것이라고 생각합니다. 하지만 파일을 변경하려면 구문에 대해 잘 모르겠습니다. '.pri' 파일입니다. –