لماذا يبدو مجلس التعاون الخليجي أكثر مطوّلة في أوبونتو 10؟
سؤال
لقد صنعت مؤخرًا استنساخ CP (للجامعة) وحدثت لاكتشاف شيء لم أتلقه أبدًا.
وهذا ينطبق على الأقل على تجميع مصدر CC.
لقد قمت بالتطوير الرئيسي لهذا البرنامج C المحدد في نظام التشغيل Mac OS X (10.6.4) ، يبني مع Apple's /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 Virtual داخل MAC ، مع أحدث GCC (لا توجد إضافات ، لا تخصيصات ، لا تعديل مثل Apple's)
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 أي تحذير.
طبع أوبونتو تحذيرين ، مع ودون -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
إصدار GCC الخاص بـ Ubuntu هو الافتراضي للتوزيع:gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3
لماذا يحدث ذلك؟
لماذا لا أرى أي تحذيرات في OSS الأخرى وفي Ubuntu أفعل؟
المحلول
يفرض Ubuntu بعض cflags كما ترون هنا