1

私は最近(大学用の)cpクローンを作成しましたが、たまたまチャンスがなかったものを発見しました。

これは、少なくともCソースをコンパイルするGCCに適用されます。

私はこの特定のCプログラムの主な開発をMacOSX(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.

ただし、最新のgccを使用してMac内のArch Linux仮想マシンでテストを実行しました(追加、カスタマイズ、Appleのようなmodはありません)

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

そして、そこにあるUbuntu10.04.1LTSのクラスでビルドする必要がありました。

私のMakefileは次のようなものでした:

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

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

そのため、私は常に(すべてのOSで)gccを-Wall有効にして実行していました。MacとArchは警告を表示しませんでした。

Ubuntuは、ある場合とない場合の2つの警告を出力しました -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バージョンがディストリビューションのデフォルトです。 gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3

なぜそれが起こるのですか?

他の2つのOSとUbuntuで警告が表示されないのはなぜですか?

4

1 に答える 1

1

ここで見られるように、UbuntuはいくつかのCFLAGSを強制します

于 2010-11-30T20:30:02.337 に答える