2010-11-19 8 views
1

Ich habe kürzlich einen cp-Klon (für die Universität) gemacht und zufällig etwas entdeckt, zu dem ich nie die Chance hatte.Warum erscheint GCC in Ubuntu 10 viel ausführlicher?

Dies gilt zumindest für GCC kompilieren eine C-Quelle.

habe ich die wichtigste Entwicklung dieser spezifischen C-Programm in einer Mac OS X (10.6.4), baut mit /usr/bin/gcc --version Apple

i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664) 
Copyright (C) 2007 Free Software Foundation, Inc. 

Allerdings habe ich die Tests in einem Bogen virtuellen Linux-Maschine lief innerhalb der Mac, mit der neuesten gcc (keine Zusätze, keine Anpassung, keine Mods wie Apple)

gcc (GCC) 4.5.1 
Copyright (C) 2010 Free Software Foundation, Inc. 

Und wir hatten es in der Klasse in der Ubuntu 10.04.1 LTS, die wir dort haben zu bauen.

Mein Makefile war so etwas wie:

CC=gcc 
#CFLAGS=-O0 -g -Wall 
CFLAGS=-O3 -Wall -finline-functions 
EXE=copy 

compile: 
    $(CC) $(CFLAGS) -o $(EXE) main.c 

Also, ich war immer läuft (in jedem OS) gcc mit -Wall aktiviert. Mac und Arch zeigten nie eine Warnung.

Ubuntu gedruckt zwei Warnungen, mit und ohne-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 

Ubuntu GCC-Version der Standard für die Verteilung ist: gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3

Warum das passiert?

Warum sehe ich keine Warnungen in den anderen beiden Betriebssystemen und in Ubuntu ich tun?

+0

Es gibt einen Anhaltspunkt in den Warnmeldungen sehen. –

+0

@Paul: Das OP fragt nicht, was die Warnungen bedeuten, sondern warum sie in einer bestimmten Umgebung erscheinen. Diese Warnungen sind sehr paranoid und erscheinen normalerweise nicht, sogar mit "-Wall". –

+1

@Marcelo: Ja, und wie ich schon sagte, ist der Grund leicht aus den Warnmeldungen ersichtlich - die Deklarationen von realpath und symlink in/usr/include/stdlib.h und/usr/include/unistd.h haben das Attribut warn_unused_result in neuere Distributionen. –

Antwort

1

Ubuntu erzwingt einige CFLAGS wie Sie here

+0

Ich habe versucht, alle Flaggen im Wiki (sofort) zu setzen und weder Arch noch Mac beschwerten sich über irgendetwas. – ssice