¡Cómo descifrar caracteres chinos confusos en programas escritos con Qt en openSUSE!
La dirección de descarga de cada versión de qt (los enlaces que aparecen en muchas publicaciones de blogs en Internet no son válidos. El siguiente enlace parece ser relativamente nuevo y se puede usar ahora):
>ftp:// ftp.qt-project.org/qt/source/
Buscar qt-x11-opensource-src-4.5.0, qt-embedded-linux-opensource-src-4.5.0 en el recurso ftp y descargue estos dos paquetes de código fuente (puede usar el paquete tar.gz o tar.bz2; si la conexión de red no es buena, verifique qué paquete es más pequeño y luego descargue qué paquete).
Después de la descarga, descomprima los dos paquetes de código fuente, descomprima una copia de qt-x11-opensource-src-4.5.0 y descomprima dos copias de qt-embedded-linux-opensource-src-4.5. 0 y asígneles el nombre respectivamente para qt-embedded-linux-opensource-src-4.5.0-x86 y qt-embedded-linux-opensource-src-4.5.0-arm.
Iniciar compilación e instalación:
Compilación I.X11:
1. Vaya al directorio de código fuente qt-x11-opensource-src-4.5.0 .
./configure -no-openssl
En mi caso, tuve que agregar la opción -no-openssl, de lo contrario obtendría un error al compilar a ssl durante el proceso de creación. El mensaje de error es el siguiente: ssl/qsslsocket_openssl_symbols_p.h: 264: error: variable o campo 'q_sk_free' declarado nulo
ssl/qsslsocket_openssl_symbols_p.h: 264: error: 'STACK' no fue declarado en este alcance
ssl/qsslsocket_openssl_symbols_p.h: 264: error: variable o campo 'q_sk_free' declarado nulo
ssl/qsslsocket_openssl_symbols_p.h: 264: error: 'a' no fue declarado en este alcance
ssl/qsslsocket_openssl_symbols_p.h: 265: error.STACK' no fue declarado en este alcance
ssl/qsslsocket_openssl_symbols_p.h: 265: error: 'a' no fue declarado en este ámbito
......
......
La ruta de instalación predeterminada es /usr/local/Trolltech/Qt- 4.5.0. Puede utilizar --prefix para especificar otras rutas de instalación.
2. gmake # En Linux, normalmente puedes usar make en lugar de gmake, pero si quieres acelerar la compilación, puedes agregar -jx, donde x es el número máximo de subprocesos.
3. Instalación de gmake
2. Compilación de qt-embedded-x86:
1. Directorio de código fuente 0-x86.
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86 -embedded x86 -no-openssl -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse- qvfb
El directorio de instalación de configuración continua y la arquitectura integrada (x86) están configurados. Al igual que con la versión X11, -no-openssl también está configurado; de lo contrario, el proceso de creación obtendrá el mismo error que al compilar para X11. Los últimos elementos son para un mejor uso de qvfb. Se dice en Internet que si no configuras estos proyectos, cuando instales qt-embedded-x86 e intentes depurar el programa en qvfb, aparecerá un error similar al siguiente:
Error al abrir dispositivo de búfer /dev/fb0QScreenLinuxFb: : conectar: No existe tal archivo o directorio. Conexión: gmake
Igual que x11
3. gamke install
3. qt-embedded-arm:
Igual que el anterior Dos versiones son diferentes. Antes de compilar qt-embedded, debe asegurarse de estar utilizando la versión arm. El proceso de compilación genera muchas bibliotecas para la arquitectura arm, por lo que se deben instalar herramientas como arm-linux-gcc y arm-linux-g. Compilé qt-embedded usando arm-linux-g proporcionado por Friendly. Estoy usando la versión arm-linux-gcc-4.5.1 proporcionada por Friendly.
1. Vaya al directorio de código fuente qt-embedded-linux-opensource-src-4.5.0-arm.
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm -embedded arm -no-openssl -qt-libpng
Especifique la ruta de instalación y arquitectura. También configura -no-openssl en la versión X11; de lo contrario, el proceso de creación obtendrá el mismo error que al compilar para X11.
Además, hay una nueva opción -qt-libpng, que debería estar relacionada con bibliotecas relacionadas con png y especifica el uso de la biblioteca png que viene con qt.
Sin eso, aparece el siguiente error aquí:
image/qpnghandler.cpp: En la función miembro 'virtual QVariant QPngHandler::option(QImageIOHandler::ImageOption) const':
p>image/qpnghandler.cpp:950:35: advertencia: 'png_info_struct::width' está en desuso (declarado en /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi /4.5.1/ .../.../.../.../.../.../.../.../arm-none-linux-gnueabi/include/png.h :639) p>
image/qpnghandler.cpp:950:35: advertencia: 'png_info_struct::width' está en desuso (declarado en /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm- none-linux-gnueabi /4.5.1/.../.../.../.../.../.../.../arm-none-linux-gnueabi/include/png h:639)<. /p>
image/qpnghandler.cpp:950:55: advertencia: 'png_info_struct::height' está en desuso (declarado en /opt/FriendlyARM/toolschain/4.5.1/lib/gcc /arm-none-linux- gnueabi/4.5.1/.../.../.../.../.../.../arm-none-linux-gnueabi/include/png.h :640)
image/qpnghandler.cpp:950:55: advertencia: 'png_info_struct::height' está en desuso (declarado en /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/ arm-none-linux-gnueabi/4.5 .1/.../.../.../.../arm-none-linux-gnueabi/include/png.h:640)
make[1]: *** [.obj/release-shared-emb-arm/qpnghandler.o] Error 1
make[1]: *** Esperando tareas pendientes completadas...
make. [1]: Saliendo del directorio `/root/qt4.5.0/qt-embedded-linux-opensource-src-4.5.0-arm/src/gui'
make: *** [subgui-make_ ordenado por defecto] Error 2
Parece que mi cadena de herramientas cruzada no coincide del todo con esta versión de QT, y Qt no parece coincidir con las estructuras de datos png de cadena de herramientas cruzada definidas en el encabezado .h Los archivos no son muy compatibles. Agregar -qt-libpng resuelve este problema.
Cuarto, qvfb:
QT se ha instalado correctamente en este momento.
Ingrese al directorio del paquete de código fuente qt-x11-opensource-src-4.5.0,
cd tools/qvfb
Ejecute make en el código fuente de qvfb directorio, genere qvfb en qt-x11-opensource-src-4.5.0/bin, podemos copiarlo a /usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin.
Fin:
En este punto, el entorno de desarrollo QT está básicamente configurado. Puede usar las herramientas qt-embedded-x86 y qvfb para depurar fácilmente programas QT y depurarlos. Después de compilar con qt-embedded-arm, se puede ejecutar en la placa de desarrollo (también hay un pequeño problema. Aunque el programa QT que compilé ahora se puede ejecutar en la placa de desarrollo, no se puede usar el compilador qt-embedded-arm. Se puede ejecutar en la placa de desarrollo, pero la pantalla táctil no se puede usar durante la operación y solo se puede controlar con un mouse USB. Para admitir la pantalla táctil, parece que es necesario trasplantar la biblioteca tslib, así que jugué. nuevamente y agregó el contenido relevante).