Sé que en el pasado existía una opción -fprefix-function-name
que agregaría un prefijo a todos los símbolos generados, ya no parece ser parte de gcc. Hay alguna otra manera de hacer esto?Cómo puedo obtener gcc para agregar un prefijo a todos los nombres de símbolos
Respuesta
Creo que this answer le dará la solución.
En resumen, se puede 'prefijo' símbolos en una biblioteca existente utilizando objcopy
así:
objcopy --prefix-symbols = loquesea _ foo.o
* EDIT: George Skoptsov's solution ' es mejor que el mío :) El truco nm
puede ser útil.
Esto no es exactamente lo que está buscando, pero he tenido que hacer algo similar en el pasado (cambio de nombre de los símbolos exportados por una biblioteca)
Si conoce los nombres de los símbolos que desea redefinir puede intentar usar objcopy --redefine-syms old=new
. Consulte las páginas man de objcopy para obtener más detalles sobre la entrada (objcopy puede sobreescribir su archivo así que tenga cuidado con eso)
Si no conoce los nombres de los símbolos, puede intentar usando nm
para obtener una lista de símbolos. Nuevamente, dado que no estoy seguro de qué tipo de símbolos está buscando, las páginas man serán probablemente su mejor opción.
- 1. En GCC, ¿cómo puedo exportar todos los símbolos de typeinfo para una biblioteca compartida sin exportar todos los símbolos?
- 2. ¿Es posible agregar un espacio de nombres C++ a todos los símbolos de una biblioteca C?
- 3. ¿Cómo puedo agregar un prefijo de ruta a todos los controladores en Symfony2?
- 4. ¿Cómo configuro NHibernate (o Fluent NHib) para agregar un prefijo de nombre de tabla a todos los nombres de tabla?
- 5. ¿Puedo deshabilitar los nombres RTTI de GCC?
- 6. Obtener todos los nombres de archivo que comienzan con un prefijo de la carpeta de recursos
- 7. C# cómo puedo obtener todos los nombres de los elementos de un archivo XML
- 8. Agregue automáticamente un prefijo a los nombres de columna para las clases @Embeddable
- 9. ¿Cómo obtener todos los nombres de propiedades en una entidad?
- 10. ¿Cómo obtener todos los nombres de clase en un espacio de nombres en Ruby?
- 11. ¿Cómo puedo obtener todos los nombres de campo del documento de Mongoid?
- 12. ¿Cómo puedo obtener todos los métodos en un protocolo?
- 13. ¿Cómo obtener los nombres de los archivos?
- 14. ¿Cómo puedo usar JQuery para obtener todos los nodos con atributos iguales a un valor?
- 15. Obtener todos los tipos en un espacio de nombres a través de la reflexión
- 16. ¿Cómo obtener todos los nombres de tabla de una base de datos?
- 17. "Prefijo 'x' no se asigna a un espacio de nombres"
- 18. java: obtener todos los nombres de variables en una clase
- 19. XSLT: Cómo obtener una lista de todos los espacios de nombres usados
- 20. ¿Cómo puedo soltar el prefijo "Application_Model_" de los nombres de clase del modelo de Zend Framework?
- 21. Xpath - Cómo obtener todos los nombres de atributos y valores de un elemento
- 22. Ocultación de símbolos en bibliotecas estáticas compiladas con Xcode/gcc
- 23. Obtener todos los nombres de tabla configurados en SessionFactory
- 24. jqgrid obtener todos los nombres de columna de grillas
- 25. ¿Cómo afectan los símbolos de depuración el rendimiento de un ejecutable Linux compilado por GCC?
- 26. cómo establecer los valores a los símbolos
- 27. forzar mysqldb dict cursor para devolver prefijo todos los nombres de columna con el nombre de tabla
- 28. Agregar un prefijo a cada URL en CakePHP
- 29. agregar/eliminar TraceListener a todos los TraceSources
- 30. ¿Puedo obtener todos los campos de un elemento (en Sitecore)?
¿Por qué necesita hacer esto? ¿Tal vez usar un espacio de nombres resolvería tu problema? –
Estoy compilando el código que obtuve de otra persona. El código tiene múltiples hilos y está tratando de usar una biblioteca C antigua, no segura para subprocesos. La solución encontrada por la persona que escribió la aplicación es tener varias copias de la biblioteca C, cada una de las cuales tiene un prefijo diferente a sus nombres de símbolo. Luego, cada hilo de la aplicación llama a una versión diferente de la función. Entonces, por ejemplo, si la biblioteca anterior tiene una función oldlib_func, existirían las versiones v1_oldlib_func, v2_oldlib_func, de modo que el hilo número 1 llamaría a v1_oldlib_func y el número de hilo 2 llamaría a v2_oldlib_func. – user1333800
La persona que escribió la aplicación tuvo que crear estas versiones diferentes de la biblioteca anterior con estos prefijos, el problema es que no obtuve esa parte del código, así que tengo que tomar el código de la biblioteca original y encontrar una manera de agregar una prefijo a los nombres de los símbolos. – user1333800