2008-11-21 12 views
7

¿Alguien tiene alguna experiencia con la ejecución de aplicaciones C++ que usan las bibliotecas de impulso en los sistemas basados ​​en uclibc? ¿Es posible? ¿Qué biblioteca estándar de C++ usarías? ¿Se puede usar uclibC++ con boost?¿Puedo usar boost en uclibc linux?

+0

Hay manuales amistosas existentes. Solo, ya sabes, diciendo. También me gustaría cuestionar el uso de impulsar en un sistema integrado de todos modos ... parece una gran cantidad de sobrecarga para el trabajo integrado. –

+0

Estoy evaluando impulsar una aplicación empresarial para sistemas de clase servidor, pero hay algunos beneficios de reducir a escala los sistemas integrados. Esto no es puramente incrustado o usaría algo más, pero impulsar trae mucho a la mesa si puedes cambiarlo. – bmdhacks

+0

Boost tiene muchas bibliotecas, estoy seguro de que algunas funcionarán y las probabilidades son que algunas no funcionarán. ¿De qué partes de impulso estamos hablando? –

Respuesta

2

Utilizamos Boost junto con GCC 2.95.3, libstdC++ y STLport en una plataforma ARMv4 corriendo uClinux. Algunas partes de Boost no son compatibles con GCC 2.x pero las que funcionan bien en nuestro caso particular. Las bibliotecas que utilizamos son los más fecha_hora, se unen , función, tupla y hilo.

Algunas de las bibliotecas que tuvimos problemas con fueron lambda, shared_pointer y formato. Es muy probable que estos problemas hayan sido causados ​​por nuestra versión de GCC, ya que tiene problemas cuando tiene demasiados o niveles profundos de estructuras de plantillas.

Si es posible, le recomiendo que ejecute el paquete de prueba de refuerzo con su cadena de herramientas particular para garantizar la compatibilidad. Por lo menos, podría compilar una cadena de herramientas nativa para asegurarse de que las versiones de su biblioteca sean compatibles.

No hemos usado uClibC++ porque eso no es lo que recomienda nuestro proveedor de herramientas, por lo que no puedo comentar esa combinación en particular.

+0

¿Puedes aclarar el uso de STLport y libstdC++ juntos? ¿A cuál impulsa el enlace? – bmdhacks

+0

Lo sentimos, enlaza a STLport. –

0

No he intentado pero no sé nada sobre uclibc que impida que Boost funcione.

Pruébalo y ve lo que sucede, diría yo.

+0

Boost requiere una biblioteca C++ estándar, si tuviera que probarlo, ¿qué biblioteca C++ usaría? – bmdhacks

+0

Además, "intentarlo" es un poco molesto para los sistemas integrados. ¿Estás diciendo que debería activar mi compilador cruzado y pasar horas y horas tratando de obtener impulso y una biblioteca de C++ en funcionamiento? Si toco algún obstáculo, ¿simplemente paso más tiempo con él o concluyo que es factible? – bmdhacks

+0

Según la cantidad de información en la pregunta original, "pruébalo" es la única respuesta que debes esperar obtener. "Es posible ejecutar KDE 4 en mi computadora, responda sin que yo proporcione ninguna especificación sobre mi computadora". –

2

Estamos utilizando muchas de las bibliotecas de Boost (hilo, sistema de archivos, señales, función, bind, any, asio, smart_ptr, tuple) en un Arcom Vulcan que es ciertamente bastante poderoso para un dispositivo integrado (64M RAM, 533MHz XScale) . Todo funciona maravillosamente.

GCC 3.4 pero no estamos usando uclib ++ (Arcom proporciona una cadena de herramientas que incluye libstd ++).

Muchos dispositivos integrados estarán encantados de ejecutar muchas de las bibliotecas de Boost, suponiendo un soporte decente para el compilador. Solo ten cuidado con el uso. Las bibliotecas de Boost elevan el nivel de abstracción y puede ser más fácil usar más recursos de lo que piensas.

+0

Gracias por la información. ¿Sospecha que la libstdC++ de Arcom es la biblioteca GNU? ¿Su sistema incluye glibc para libc? – bmdhacks

+0

Sí, la libstdC++ de Arcom es la versión de GNU. Y sí, usamos glibc. uclib también debería funcionar, pero no hemos (aún) seguido ese camino. – MattyT

+0

Gracias por la información, pero estoy más interesado en los sistemas basados ​​en uclibc. Una vez que empiezas a usar glibc y GNU libstdC++, eres más o menos lo mismo que bueno ole RedHat en x86. Es posible que glibc y GNU libstdC++ sean las únicas formas de usar boost, pero espero que alguien sepa si ese es el caso. – bmdhacks

1

Busqué en Google "uclibc stlport". Parece que hay al menos algunas versiones de uclibc para las cuales stlport se puede compilar (ver this). Dado que, diría que Boost está a solo unos pasos de compilación. He leído un mensaje de David Abrahams (que es un miembro activo de la comunidad de impulso) que dice que Boost no depende directamente de la libc utilizada. Pero algunas bibliotecas aún pueden causar problemas, Boost.Python por ejemplo, ya que depende de otra cosa (Python en mi ejemplo) que podría ser difícil de compilar con uclibc.

Esperanza esto ayuda

+0

Gracias por la primera respuesta razonable. Me tienes a mitad de camino, lo cual es muy útil. Todavía estoy esperando a alguien con experiencia práctica o evidencia de que esto realmente se implemente, teniendo en cuenta la gran recompensa que he ofrecido. – bmdhacks

0

Sí, puede usar boost con uclibc.
Intenté esto con boost 1.45 & uClibc en ARM9260

  1. Uso fresca OpenEmbedded
  2. configurarlo para usar Angstrom
  3. Configurar Angstrom utilizar uClibc
  4. maquillaje impulso - bitbake impulsar
Cuestiones relacionadas