Tengo una biblioteca estática que se ha compilado con gcc 3.4.3. Me gustaría utilizar esto en el código que ahora se compilará con gcc-4. He leído vagamente que los binarios gcc-3 y gcc-4 no son compatibles y que la biblioteca necesitará ser recompilada, pero solo quiero confirmación al respecto. ¿No hay, de todos modos, una biblioteca gcc-3 que pueda usarse con gcc-4?son binarios gcc-3 compatibles con gcc-4
Respuesta
Conseguir que alguien más en la organización, o en un proveedor, actualice su biblioteca a gcc 4 no siempre es una opción, especialmente si la abandonaron.
Si C++: asumiendo que es capaz de enlazar, en tiempo de ejecución se puede volar en código C++ plantilla de biblioteca estándar que utiliza corrientes, como símbolos generados por g ++ 4 se resuelven contra las definiciones generadas por g ++ 3.
Usted podría ver esta advertencia al vincular:
/usr/bin/ld: advertencia: libstdC++ so.5, que necesita (lib estática legacy), pueden entrar en conflicto con libstdC++ so.6
He aquí un ejemplo que.. puede entrar en: destructor de la clase base ~ basic_stringbuf() (en realidad una plantilla) se puede definir en su módulo compilado bajo g ++ 3, que mista kenly es llamado por el destructor ~ basic_ostringstream() en libstdC++ so.6, que es invocado por el módulo compilado g ++ 4. Ka-Boom.
Probé compat-libstdC++ - 33 pero no tuve suerte con eso.
Dicho esto, sigo enlazando las bibliotecas C de 32 bits de la era gcc en mis programas gcc 4.1.2 C++.
En realidad, es un problema con los cambios de nombres. C no tiene estos problemas, por lo que puede vincularse con bibliotecas C antiguas. –
por lo general. A veces, las bibliotecas C cambian al punto donde el enlace funciona pero el código no. Casi siempre esto se debe a la macro expansión de getc y amigos. – Joshua
Sin embargo, si la biblioteca está vinculada completamente estática, esto no será un problema. – Joshua
- 1. Xattrs no son compatibles
- 2. ¿Qué navegadores son compatibles con "! Important"?
- 3. ¿Qué navegadores solo son compatibles con SSLv2?
- 4. ¿Las expresiones lambda son compatibles con Razor?
- 5. ¿Qué navegadores son compatibles con document.activeElement?
- 6. ¿Qué navegadores son compatibles con XSLT 2.0?
- 7. ¿Las enumeraciones son compatibles con JDBC?
- 8. ¿Qué navegadores son compatibles con HTML SHORTTAGs?
- 9. Son declaraciones preparadas compatibles con MySQL incorporado
- 10. ¿Qué navegadores web son compatibles con Array.forEach()
- 11. son generadores compatibles en RPython?
- 12. Cómo usar archivos compatibles con ARC en proyectos que no son compatibles con ARC
- 13. Accesorios compatibles con Mocha compatibles
- 14. ¿Qué teléfonos son compatibles con J2ME (Java Micro Edition)?
- 15. Trabajando LinqToSQls "consultas con colecciones locales no son compatibles" excepción
- 16. en macports, ¿qué puertos son compatibles con 'port selec'?
- 17. Los desencadenadores no son compatibles con Windows 8 XAML?
- 18. ¿Por qué algunos sitios web no son compatibles con iPad?
- 19. ¿Qué formatos de imagen son compatibles con CANVAS en html5?
- 20. ¿Por qué las conexiones persistentes no son compatibles con URLLib2?
- 21. ¿Qué funciones de expresiones regulares son compatibles con Solr edismax?
- 22. contenedores adaptadores no son compatibles con los iteradores
- 23. ¿Qué navegadores web son compatibles con meteor web framework?
- 24. ¿Todos los navegadores son compatibles con $ _SERVER de PHP ['HTTP_X_REQUESTED_WITH']?
- 25. ¿Las extensiones reactivas son compatibles con los búfers de laminación?
- 26. ¿Las API de Java Servlet son compatibles con versiones anteriores?
- 27. ¿Qué navegadores móviles son compatibles con javascript (y Ajax)?
- 28. ¿Qué etiquetas HTML son compatibles con los componentes Swing?
- 29. ¿Qué navegadores son compatibles con window.postMessage call now?
- 30. SQLAlchemy con Python 3.2: ¿las extensiones C no son compatibles?
http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html – James
Ha etiquetado esto tanto en C++ como en C. ¿La biblioteca contiene código C++? – Rup
Sí, aunque en bibliotecas separadas. Por ejemplo, library1.a es el código c. library2.a es el código cpp. – Abhijith