¿Por qué parece GCC mucho más detallado en Ubuntu 10?
Pregunta
He hecho recientemente un clon de CP (por la Universidad) y me pasó a descubrir algo que nunca había tenido la oportunidad de.
Esto se aplica al menos a GCC compilar una fuente C.
Hice el desarrollo principal de este programa específico C en un Mac OS X (10.6.4), obra con la de Apple /usr/bin/gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
Copyright (C) 2007 Free Software Foundation, Inc.
Sin embargo, me encontré con las pruebas en una máquina virtual de Linux del arco dentro de la Mac, con la última gcc (sin adiciones, sin personalizaciones, no hay mods como Apple)
gcc (GCC) 4.5.1
Copyright (C) 2010 Free Software Foundation, Inc.
Y tuvimos que construirlo en la clase en el Ubuntu 10.04.1 LTS que tenemos allí.
Mi Makefile era algo como:
CC=gcc
#CFLAGS=-O0 -g -Wall
CFLAGS=-O3 -Wall -finline-functions
EXE=copy
compile:
$(CC) $(CFLAGS) -o $(EXE) main.c
Por lo tanto, yo siempre estaba corriendo (en todos los sistemas operativos) gcc con -Wall
habilitado.
Mac y Arco no mostraron ninguna advertencia.
Ubuntu impreso dos advertencias, con y sin -Wall
do_copy.c: In function 'do_copy_file2file':
do_copy.c:27: warning: ignoring return value of 'realpath', declared with attribute warn_unused_result
do_copy.c: In function 'do_copy_symlink2file':
do_copy.c:117: warning: ignoring return value of 'symlink', declared with attribute warn_unused_result
versión de GCC de Ubuntu es el valor predeterminado para la distribución:
gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3
¿Por qué ocurre esto?
¿Por qué no aparece ninguna advertencia en los otros dos sistemas operativos y en Ubuntu hacer?
Solución
Ubuntu hace cumplir algunas CFLAGS como se puede ver aquí