No hay consecuencias negativas, excepto que su ejecutable puede ser innecesariamente grande. Es probable que el enlazador elimine definitivamente el código que no usaste, y eso reducirá las cosas. Puede usar algún tipo de herramienta de visualización de objetos (otool
, objdump
, nm
, etc.) en el ejecutable de salida para ver si su programa tiene símbolos adicionales en él.
estoy usando un Mac, por lo que habrá algunas diferencias si está utilizando el conjunto estándar de herramientas gcc, pero aquí es un ejemplo:
$ make
gcc -o app main.c file2.c
gcc -Wl,-dead_strip -o app_strip main.c file2.c
$ ls -l app*
-rwxr-xr-x 1 carl staff 8744 Feb 6 20:05 app
-rwxr-xr-x 1 carl staff 8704 Feb 6 20:05 app_strip
Creo que en el mundo gcc no sea de Apple , pasaría -Wl,--gc-sections
en lugar de -Wl,-dead_strip
en mi ejemplo. La diferencia de tamaño en los dos ejecutables se pueden ver se debe a la función adicional de ser despojado:
$ nm app | cut -c 20- > app.txt
$ nm app_strip | cut -c 20- > app_strip.txt
$ diff app.txt app_strip.txt
8d7
< _function2
Puede intentar vincular con y sin la biblioteca adicional y ver si el ejecutable tiene el mismo tamaño. –
No sé acerca de GCC pero MSVC incluirá el contenido de todos los archivos .obj tanto si los referencia como si no, pero incluirá solo las partes de los archivos .lib a las que hace referencia. Esperaría que GCC fuera el mismo –
El paso descrito comúnmente se llama "vincular". El término "compilar" se usa normalmente para describir la producción de archivos de objetos. – MSalters