Estoy dividiendo parte del código en mi proyecto en una biblioteca separada para ser reutilizado en otra aplicación. Esta nueva biblioteca tiene varias funciones definidas pero no implementadas, y tanto mi proyecto actual como la otra aplicación implementarán sus propias versiones de estas funciones.¿Cómo puedo obligar a GCC a compilar funciones que no se utilizan?
Implementé estas funciones en mi proyecto original, pero no se llaman en ningún lugar dentro de él. Solo son llamados por esta nueva biblioteca. Como resultado, el compilador los optimiza y obtengo fallas de enlace. Cuando agrego una llamada ficticia a estas funciones, las fallas de enlace desaparecen.
¿Hay alguna manera de decirle a GCC que compile estas funciones aunque no las llame?
Estoy compilando con gcc 4.2.2 usando -O2
en SuSE linux (x86-64_linux_2.6.5_ImageSLES9SP3-3).
¿Ha intentado utilizar -O0? –
@jcomeau: ¿Pero qué pasa si los quiere optimizados? – Cascabel
si funciona sin optimización, entonces lo que hay que hacer es averiguar qué optimizaciones específicas desactivar; posiblemente -fno-en-línea-pequeñas-funciones sería una, pero nunca he profundizado en cómo gcc hace su magia –