2014-09-07 2 views
-2

Есть тонны избыточных объяснений о том, как отключить предупреждения gcc, которые рассматриваются как ошибки в качестве разработчика исходного кода. Теперь я хотел бы знать, есть ли способ отключить их, не касаясь исходного кода (включая файлы конфигурации инструмента сборки), т. Е. Компиляция продолжает игнорировать предупреждение. В моем понимании gcc docs на https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html, CXXFLAGS="-w" должно быть достаточно, если указано для ./configure и make, например. CXXFLAGS="-w" ./configure && make.Как отключить GNU c компилятор/gcc предупреждения, не касаясь исходного кода?

Примечание: Я знаю, что это не очень хорошая идея, чтобы составить программу против намерений разработчиков и сообщающихся вопрос и фиксируя его вместе всегда лучший вариант, если не единственный.

Справочная информация (пожалуйста, прочитайте весь вопрос, особенно примечание выше и ниже, я не ищу исправления для следующей проблемы!): Я пытаюсь скомпилировать qemu git tag v2.1.0 в Debian 7.6 chroot on Synology DSM 5.0 с ARMv7 архитектуры и получения

CC migration-rdma.o 
migration-rdma.c: In function 'ram_chunk_start': 
migration-rdma.c:521:12: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c: In function '__qemu_rdma_add_block': 
migration-rdma.c:553:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c:554:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c: In function '__qemu_rdma_delete_block': 
migration-rdma.c:661:45: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c:696:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c: In function 'qemu_rdma_search_ram_block': 
migration-rdma.c:1109:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c: In function 'qemu_rdma_register_and_get_keys': 
migration-rdma.c:1172:50: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] 
migration-rdma.c:1173:29: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] 
migration-rdma.c:1173:51: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] 
migration-rdma.c:1174:29: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] 
migration-rdma.c: In function 'qemu_rdma_post_send_control': 
migration-rdma.c:1558:36: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] 
migration-rdma.c: In function 'qemu_rdma_post_recv_control': 
migration-rdma.c:1614:37: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] 
migration-rdma.c: In function 'qemu_rdma_write_one': 
migration-rdma.c:1862:16: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] 
migration-rdma.c:1866:53: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c:1920:52: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c:1921:50: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c:1975:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c:1996:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c:2008:58: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 
migration-rdma.c: In function 'qemu_rdma_registration_handle': 
migration-rdma.c:3021:21: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] 
migration-rdma.c:3086:41: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] 
cc1: all warnings being treated as errors 
make: *** [migration-rdma.o] Error 1 

Я играл вокруг с некоторыми вариантами, и теперь я просто хочу знать, можно ли или нет для того, чтобы лучше acchieve внутри в GNU инструменты для сборки. Я очень уверен, что результат сборки будет по крайней мере ненадежным, если не будет непригодным.

КСТАТИ: Если вы нашли это через $ SEARCH_ENGINE и имеющие такие же или аналогичные проблемы с QEMU: https://bugs.launchpad.net/qemu/+bug/1363641

+3

Не отключайте предупреждения GCC, они настолько полезны (и здесь они показывают проблему в вашем коде). Если вы настаиваете, измените 'CFLAGS' вашего' Makefile' (или вашей команды 'make'); и ошибки * должны быть исправлены * –

+0

Предупреждения во внешних пакетах - это то, к чему вы, к сожалению, должны жить, и вместо того, чтобы просто замолчать их, вы должны приставать к авторам пакета, чтобы исправить это. –

+0

Вот что я написал в вопросе !! –

ответ

0

Вы правы о -w вариант, и самый простой способ, чтобы убедиться, что она распространяется везде поставить это в переменной CC: CC="gcc -w" ./configure ...

Однако, если они свернули на это предупреждение как ошибку конкретно, то я не думаю, что вы должны попытаться отключить его. В этом случае код явно предназначался для того, чтобы это предупреждение не было возможным, и, вероятно, что-то ужасно неправильно в вашей инструментальной цепочке (например, целые типы определены неправильно, так что тип, который они ожидают, будет иметь тот же размер, что и указатели, не). Вы должны попытаться отследить эту проблему, иначе вы просто будете тратить свое время со сломанной сборкой, которая выйдет из строя при ее запуске. Почему бы не посмотреть на некоторые исходные строки ссылку на предупреждающие сообщения и посмотреть, что происходит на самом деле?