2014-09-09 4 views
1

Я установил cygwin с gcc 4.8.3 (для компиляции C++). Все было хорошо, пока я не решил построить 32-разрядный исполняемый файл: возникла ошибка компиляции, когда я скомпилировал код #include <cstdlib> (ошибка не появляется, если я использую stdlib.h вместо cstdlib).Как настроить gcc в cygwin?

После некоторого копания, я нашел следующий файл:

/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/x86_64-pc-cygwin/bits/C++ config.h

В этом файле у меня есть:

/* Define if __int128 is supported on this host. */ 
#define _GLIBCXX_USE_INT128 1 

Если удалить этот код, ошибка компиляции исчезает.

Это правильный способ настроить мою конфигурацию gcc? (Я почти уверен, что это не так)

Если нет, как мне это сделать?


Для справки, здесь ошибка компиляции я говорил:

 
$ echo '#include <cstdlib>' | g++ -c -m32 -x c++ - 
In file included from <stdin>:1:0: 
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/cstdlib:178:10: error: expected unqualified-id before ‘__int128’ 
    inline __int128 
     ^
+0

В установке, способной обрабатывать несколько ABI, существует несколько файлов C++ config.h. Если ваша версия имеет только одну, то она не предназначена для обработки -m32, и вам нужно установить что-то еще. –

+0

Я просто испытал подобное с опцией '-m32'. Должен любить это ... Вы даже не можете сообщить об ошибке, потому что у них нет слежения за ошибками: [Отслеживание ошибок Cygwin не существует] (https://www.cygwin.com/ml/cygwin/ 2010-06/msg00664.html). Эта ошибка, вероятно, будет продолжаться очень долго ... – jww

+0

Cygwin имеет процедуру отчетности о проблемах и получения помощи. Если вы считаете, что видите ошибку, было бы разумно спросить об этом там ... https://cygwin.com/problems.html – ewindes

ответ

3

Скачать архив с one of GCC mirror sites. И следуйте инструкциям INSTALL. Это очень просто, просто это снова для 4.9.1.

Для вашей проблемы вы найдете на 32-разрядная машина? Нет необходимости в взломать Исходный код. Запустили ли вы ./configure? Поддерживает ли ваша машина 128 бит int? Там возможно быть параметром ./configure, чтобы указать это или нет.

+0

Проблема возникает при использовании опции '' g ++ '' '-m32' на 'x86_64'. – jww