Почему GCC кажется гораздо более многословным в Ubuntu 10? - PullRequest
1 голос
/ 19 ноября 2010

Я недавно сделал клон cp (для университета), и случайно обнаружил то, чего у меня никогда не было.

Это относится по крайней мере к GCC, компилирующему источник C.

Я сделал основную разработку этой конкретной программы на C в Mac OS X (10.6.4), сборка с 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.

Однако я провел тесты на виртуальной машине Arch Linux в Mac с последней версией gcc (без дополнений, без настроек, без модов, подобных Apple)

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

И мы должны были собрать его в классе в Ubuntu 10.04.1 LTS, который у нас есть.

Мой Makefile был что-то вроде:

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

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

Итак, я всегда запускал (в каждой ОС) gcc с включенным -Wall. Mac и Arch никогда не показывали никаких предупреждений.

Ubuntu напечатал два предупреждения, с и без -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

Версия UCC для Ubuntu по умолчанию используется для распространения: gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3

Почему это происходит?

Почему я не вижу предупреждений в двух других ОС, а в Ubuntu я вижу?

1 Ответ

1 голос
/ 30 ноября 2010

Ubuntu использует некоторые CFLAGS, как вы можете видеть здесь

...