¿Cómo puedo determinar si una función existe dentro de una biblioteca, o enumerar las funciones en una biblioteca compilada?¿Cómo enumeraría las funciones disponibles, etc. contenidas en una biblioteca compilada?
Respuesta
Puede usar el comando nm para enumerar los símbolos en bibliotecas estáticas.
nm -g -C <libMylib.a>
uso de este comando:
objdump -t "tu-biblioteca"
Se imprimirá más de lo que quiere - no sólo funcionar nombres, sino a toda la tabla de símbolos. Comprueba los diversos atributos de los símbolos que obtienes, y podrás ordenar las funciones de las variables y demás.
En Linux/Unix puede usar objdump -T
para enumerar los símbolos exportados contenidos en un objeto determinado. En Windows hay dumpbin
(IIRC dumpbin /exports
). Tenga en cuenta que los nombres de las funciones de C++ están destrozados para permitir sobrecargas.
EDITAR: después de ver el anwser de Codelogic, recordé que objdump también entiende -C para realizar el desempañado.
Para binarios ELF, puede utilizar readelf:
readelf -sW a.out | awk '$4 == "FUNC"' | c++filt
-s
: Lista de símbolos -W
: no corte nombres demasiado largos
El comando awk filtrará entonces todas las funciones, y C++ filt los desmantelará. Eso significa que los convertirá de un esquema de nombres interno para que se muestren en forma legible para los humanos. Genera nombres similares a este (tomado de lib boost.filesystem):
285: 0000bef0 91 FUNC WEAK DEFAULT 11 boost::exception::~exception()
Sin C++ filt, el nombre aparece como _ZN5boost9exceptionD0Ev
Para las herramientas de Microsoft, "link /dump /symbols <filename>
" le dará la sangrienta detalles. Probablemente haya otras formas (u opciones) de ofrecer una lista más fácil de leer.
- 1. Utilizando una biblioteca C compilada de emscripten de node.js
- 2. Eliminar las fechas contenidas en otras fechas?
- 3. ¿Cómo hacer que las funciones $ (documento) .ready() estén disponibles globalmente?
- 4. ¿Cómo manejar las funciones de desactivación en la biblioteca?
- 5. ¿Cómo reutilizar las mismas funciones en diferentes archivos .aspx o crear una biblioteca de funciones?
- 6. ¿Qué contiene una biblioteca estática compilada por GCC?
- 7. Cómo se implementan las funciones de la biblioteca en Haskell
- 8. Mono funciones creadas disponibles en .NET?
- 9. Cómo buscar funciones y tablas disponibles en un sistema SAP
- 10. PHP: Cómo llamar a las funciones de la biblioteca estándar
- 11. Cómo alias las funciones de la biblioteca C?
- 12. ¿Cómo es una clase compilada de C++?
- 13. Cómo enumerar las funciones exportadas en una biblioteca compartida en Ubuntu
- 14. ¿Cómo editar una cadena codificada en una DLL compilada?
- 15. ¿Cómo uso funciones como CONCAT(), etc. en ARel?
- 16. Evaluar expresiones contenidas como cadenas
- 17. ¿Cuáles son las funciones POSIX más importantes que no están disponibles en Android?
- 18. ¡La composición de las funciones en una lista de funciones!
- 19. ¿Hay funciones de DbContext no disponibles en ObjectContext?
- 20. ¿Cómo es que las funciones de Linq están disponibles en una variable que puede ser de un tipo cadena
- 21. virtualenvwrapper funciones no disponibles en scripts de shell
- 22. ¿Cómo distinguir un marco de una biblioteca de funciones?
- 23. Imprimir todas las variables disponibles en una plantilla Smarty
- 24. cómo recorrer varias CABasicAnimations contenidas en un bloque de CATransaction?
- 25. Vinculación estática selectiva de funciones de biblioteca en biblioteca compartida
- 26. ¿Recomendar una biblioteca de juegos Java/Android? ¿Tarjeta, placa, etc.?
- 27. Uso de una función compilada listable en listas sin tensores
- 28. ¿Por qué las funciones no están disponibles en el objeto global?
- 29. Cómo utilizar Math.max, etc., como funciones de orden superior
- 30. ¿Cómo enumerar todas las funciones en un módulo de Python?