Hola,
Yo utilizo WATCOM C para compilar mis programas.
Ya se que esta viejito pero realmente no he encontrado otra herramienta que me de las opciones que me da WATCOM (por ejemplo, que es la que mas aprecio de todas, que me deje incluir ensamblador con sintaxis de Intel, y no de AT&T).
Me veo en la obligacion de actualizarme ya que el compilador de WATCOM soporta hasta 32 bits, que es el wcc386. Ya no 64 bits y ya casi no hay ordenadores con 32 bits.
La cuestion es que estuve intentando hacer lo siguiente con GCC:
Que genere codigo idependiente de la posicion.
Que no incluya ninguna cabecera o archivo "estandar" a menos que lo requiera yo explicitamente en el codigo con alguna directiva #include.
Que me deje programar la rutina __start, que no la incluya por si mismo.
En fin, esto con wcc386 se haria asi:
wcc386 main.c -s -w9 -e25 -oa -d0 -5 -bt=nt
y en GCC segun lo que entiendo, se haria asi:
gcc -pie -nostdlib -nostartfiles main.c -o main.obj
la cuestion es que obtengo esto:
.../std.h:12:14: warning: conflicting types for built-in function 'strlen'
unsigned int strlen(const char *s);
con la opcion -nostdlib no deberia haber tomado en cuenta la funcion "built-in" strlen ¿O si? ¿O es que se refiere a que la funcion strlen esta hardcoded dentro de GCC?
Por otra parte, si me recomiendan algun otro compilador de C que permita incluir ensamblador de Intel, lo agradeceria mas que esto, ya que no me llevo nada bien con GCC. Me encanta casi todo lo que salio de GNU pero GCC no es una de esas cosas xd