Question

J'ai récemment fait un clone cp (pour l'Université) et j'arrivé à découvrir quelque chose que je ne l'avais jamais eu la chance de.

Cela vaut au moins pour la compilation GCC une source C.

Je l'ai fait le développement principal de ce programme spécifique C dans un Mac OS X (10.6.4), construit avec /usr/bin/gcc --version d'Apple

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

Cependant, j'ai couru les tests dans une machine virtuelle Arch Linux dans le Mac, avec la dernière gcc (aucun ajout, aucune personnalisation, pas de mods comme Apple)

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

Et nous avons dû construire dans la classe dans Ubuntu 10.04.1 LTS que nous avons là.

Mon Makefile était quelque chose comme:

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

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

Alors, j'étais toujours en cours d'exécution (dans tous les OS) avec gcc -Wall activé. Mac et Arch ne montraient aucun avertissement.

Ubuntu deux avertissements imprimés, avec sans -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

La version de GCC d'Ubuntu est la valeur par défaut pour la distribution: gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3

Pourquoi est-ce que cela se produise?

Pourquoi ne vois-je pas des avertissements dans les deux autres systèmes d'exploitation et dans Ubuntu-je faire?

Était-ce utile?

La solution

Ubuntu applique certains CFLAGS comme vous pouvez le voir

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top