¿Es GCC un compilador o un linker?
Según tengo entendido no es ninguno de los dos, es un programa "front-end" para el compilador y el enlazador...
Los usuarios llaman un programa controlador llamado gcc, que interpreta los argumentos dados, decide qué compilador usar para cada archivo y ejecuta el ensamblador con el código resultante, después posiblemente ejecuta el enlazador para producir un programa completo.
¿Existe una opcion -l que especifica una libreria como archivo por separado, o cuando se especifica por ejemplo -lwinhttp esta libreria esta integrada de antemano en gcc.exe?
En sistemas GNU/Linux te enlaza con el shared object (
.so) directamente (sin necesidad de librerías estáticas), sin embargo se puede utilizar con librerías estáticas también (
.a)...
En cambio si estás utilizando por ejemplo MinGW, si o si necesitás las librerías estáticas que enlazan a las librerías dinámicas, en el caso de
-lwinhttp, si es que existe, tendrías que encontrar la librería dinámica
libwinhttp
.a en el directorio
\lib. Si no se encuentra se puede generar la librería estática
libwinhttp.a manualmente con los exports que se requieran para enlazar tu programa con la librería dinámica o incluso utilizar las librerías estáticas
.lib del Visual Studio.
NOTA: Solo se pueden utilizar estáticas que enlazan a librerías dinámicas en este caso, no las que contienen código...
B#