Domanda

Ho recentemente fatto un clone cp (per University) e mi è capitato di scoprire qualcosa che non avevo mai avuto la possibilità di.

Questo vale almeno per GCC compilazione di un sorgente C.

Ho fatto lo sviluppo principale di questo programma specifico di C in un Mac OS X (10.6.4), costruisce con 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.

Tuttavia, ho eseguito il test in una macchina virtuale Arch Linux all'interno del Mac, con l'ultima gcc (senza aggiunte, senza personalizzazioni, nessun mods come Apple)

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

E abbiamo dovuto costruirlo nella classe in Ubuntu 10.04.1 LTS che abbiamo lì.

Il mio Makefile era qualcosa di simile:

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

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

Così, mi è stato sempre in esecuzione (in tutti i sistemi operativi) gcc con -Wall abilitato. Mac e Arco non ha mostrato alcun preavviso.

Ubuntu stampato due avvertimenti, con e senza -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

versione di GCC di Ubuntu è l'impostazione predefinita per la distribuzione: gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3

Perché succede questo?

Perché non vedo eventuali avvisi di altri due sistemi operativi e in Ubuntu posso fare?

È stato utile?

Soluzione

Ubuntu fa rispettare alcune CFLAGS come si può vedere qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top