No se puede build QTAV para cubieboard2 en Cubian

Estoy tratando de hacer QTAV lib para el entorno cubieboard2 y experimentar problemas. Podrias ayudarme por favor.

Esto es lo que dice qmake:

cubie@Cubian:~/QtAV/output$ qmake ../QtAV.pro Project MESSAGE: BUILD_DIR=/home/cubie/QtAV/output Info: creating cache file /home/cubie/QtAV/output/.qmake.cache Project MESSAGE: target arch: arm Project MESSAGE: target arch features: Project MESSAGE: To disable config tests, you can use 1 of the following methods Project MESSAGE: 1. create '.qmake.conf' in the root source dir, add 'CONFIG += no_config_tests'(Qt5) Project MESSAGE: 2. pass 'CONFIG += no_config_tests' or '-config no_config_tests' to qmake Project MESSAGE: 3. add 'CONFIG += no_config_tests' in /home/cubie/QtAV/user.conf Project MESSAGE: To manually set a config test result to true, disable config tests and enable config_name like above Checking for avutil... yes Checking for avcodec... yes Checking for avformat... yes Checking for swscale... yes Project MESSAGE: checking for optional features... Checking for swresample... yes Checking for avresample... no Checking for gl... yes Checking for avfilter... yes Checking for sse4_1... no Checking for openal... no Checking for portaudio... yes Checking for direct2d... no Checking for gdiplus... no Checking for dxva... no Checking for xv... yes Checking for vaapi... yes Checking for libcedarv... yes Project MESSAGE: To recheck the dependencies, delete '.qmake.cache' in the root of build dir, run qmake with argument 'CONFIG+=recheck' or '-config recheck' 

Entonces lo hago y aquí está el último post:

 g++ -c -pipe -isystem /home/cubie/QtAV/src -isystem /home/cubie/QtAV/src/.. -O2 -Wall -W -D_REENTRANT -fPIC -DBUILD_QTAV_LIB -D__STDC_CONSTANT_MACROS -DQTAV_HAVE_AVFILTER=1 -DQTAV_HAVE_SWRESAMPLE=1 -DQTAV_HAVE_PORTAUDIO=1 -DQTAV_HAVE_XV=1 -DQTAV_HAVE_GL=1 -DQTAV_HAVE_CUDA=1 -DQTAV_HAVE_VAAPI=1 -DQTAV_HAVE_CEDARV=1 -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/local/Qt-5.3.1/mkspecs/linux-g++ -I/home/cubie/QtAV/src -I/usr/local/Qt-5.3.1/include -isystem /home/cubie/QtAV/src -I/home/cubie/QtAV -isystem /home/cubie/QtAV/src/QtAV -isystem /home/cubie/QtAV/src/cuda -isystem /home/cubie/QtAV/src/cuda/dllapi -I/usr/local/Qt-5.3.1/include/QtOpenGL -I/usr/local/Qt-5.3.1/include/QtWidgets -I/usr/local/Qt-5.3.1/include/QtGui -I/usr/local/Qt-5.3.1/include/QtCore -I.moc/5.3.1/QtAV -I. -o .obj/QtAV_linux_arm/VideoDecoderCedarv.o /home/cubie/QtAV/src/VideoDecoderCedarv.cpp {standard input}: Assembler messages: {standard input}:730: Error: selected processor does not support Thumb mode `vuzp.8 d0,d1' {standard input}:731: Error: selected processor does not support Thumb mode `vuzp.8 d2,d3' 

Estoy usando Cubian (clon de Debian para cubieboard):

 cubie@Cubian:~/QtAV/output$ uname -a Linux Cubian 3.4.75-sun7i #35 SMP PREEMPT Sat Feb 8 02:10:31 CST 2014 armv7l GNU/Linux 

Aquí está mi versión de gcc:

 cubie@Cubian:~/QtAV/output$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper Target: arm-linux-gnueabihf Configunetworking with: ../src/configure -v --with-pkgversion='Debian 4.6.3-14' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shanetworking --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf Thread model: posix gcc version 4.6.3 (Debian 4.6.3-14) 

Aquí está mi cpuinfo

 cubie@Cubian:~$ cat /proc/cpuinfo Processor : ARMv7 Processor rev 4 (v7l) processor : 0 BogoMIPS : 2004.17 processor : 1 BogoMIPS : 2011.05 Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 4 Hardware : sun7i Revision : 0000 Serial : 0000000000000000 Chipid : 16516592-80826652-56484848-088254ea 

también

 cubie@Cubian:~$ gcc -dumpmachine arm-linux-gnueabihf 

¿Qué podría estar mal?

    Tu problema está aquí:

     {standard input}: Assembler messages: {standard input}:730: Error: selected processor does not support Thumb mode `vuzp.8 d0,d1' {standard input}:731: Error: selected processor does not support Thumb mode `vuzp.8 d2,d3' 

    Explicación

    De algunas cosas que los desarrolladores de iOS deben saber sobre el procesador ARM :

    Pulgar

    El set de instrucciones Thumb es un subset del set de instrucciones ARM, comprimido para que las instrucciones tomen solo 16 bits (todas las instrucciones ARM tienen un tamaño de 32 bits; Thumb sigue siendo una architecture de 32 bits, solo las instrucciones ocupan less espacio). No es una architecture diferente, sino que debe verse como una abreviatura de las instrucciones y funcionalidades de ARM más comunes. La ventaja, por supuesto, es que permite una importante networkingucción en el tamaño del código, ahorrando memory, caching y ancho de banda de código; si bien esto es más útil en aplicaciones de tipo microcontroller donde permite ahorrar hardware en la memory utilizada, sigue siendo útil en dispositivos iOS, y como tal está habilitado por defecto en los proyectos Xcode iOS. La networkingucción del tamaño del código es buena, pero nunca llega al 50% ya que a veces se requieren dos instrucciones para una instrucción ARM equivalente. Las instrucciones ARM y Thumb no se pueden mezclar libremente, el procesador necesita cambiar de modo cuando va de uno a otro; esto solo puede ocurrir al llamar o al regresar de una function. Entonces, una function tiene que ser Thumb o ARM como un todo; en la práctica, no se controla si el código se comstack para Thumb o ARM en la granularidad de la function, sino en la granularidad del file fuente.

    De Debian Wiki en Arm Hard Floats

    Trillizo

    GCC, cuando está diseñado para apuntar al triplete GNU arm-linux-gnueabi, será compatible con las convenciones de llamadas de flotación rígida y flotación blanda.

    dpkg depende del triplete para identificar el puerto (gcc -dumpmachine output). Algunos otros proyectos como multiarch dependen de tener tripletas distintos en todas las architectures Debian.

    Una opción sería usar el campo de proveedor en el triplete para tener trillizos distintos. Por ejemplo, el triplete podría ser arm-hardfloat-linux-gnueabi.

    arm-none-linux-gnueabi, como en los comstackdores de CodeSourcery, sería una opción, pero es confuso relacionarse con arm-linux-gnueabi versus arm-none-linux-gnueabi; es más claro relacionarlo con arm-hardfloat-linux-gnueabi y también permite distinguir entre CodeSourcery y el nuevo puerto.

    La última decisión fue usar un triplete de arm-linux-gnueabihf


    En resumen, el post de error publicado anteriormente indica que el comstackdor en su configuration actual no admite parte o la totalidad del set de instrucciones Thumb . Aunque no puedo decirte si hay otro comstackdor disponible, puedo decirte que debes verificar dos cosas:

    1. ¿Ha verificado que el comstackdor admite su model enumerado aquí ?
    2. ¿Ha configurado el entorno QTAV, como se describe en la Wiki?

    Como nota al margen, y no para promocionar mi bocina de distros, pero ¿has pensado en usar Gentoo en ARM?


    Otras cosas que podría necesitar:

    • CFLAGS apropiado para su procesador

    CHOST = "armv7a-hardfloat-linux-gnueabi" CFLAGS = "- O2 -march = armv7-a -mtune = corteza-a (7 u 8) -mfpu = vfpv3-d16 -mfloat-abi = tubería dura -fomit- frame-pointer "CXXFLAGS =" $ {CFLAGS} "