Наличие/отсутствие ошибок сборки в зависимости от компилятора (в чём может быть проблема?)

Модератор: Модераторы разделов

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Наличие/отсутствие ошибок сборки в зависимости от компилятора

Сообщение t.t »

Есть проект, который раньше собирался в цигвиновском окружении как для тестирования в винде, так и с кросскомпиляцией для ARM/Linux. Сейчас этот же проект пытаюсь собирать в Linux-е: для ARM подобрал кросс-тулчейн, и всё нормально собрал; а вот для тестирования на PC (c libwine) собираться не хочет, выдавая какие-то непонятные мне сообщения:

Код:

make[1]: Entering directory `/home/t/work/pocketbook/src/fbreader-pocketbook/zl ibrary/core' make[2]: Entering directory `/home/t/work/pocketbook/src/fbreader-pocketbook/zl ibrary/core/src/library' Compiling ZLibrary.o ... winegcc -MMD -c -pipe -fno-exceptions -Wall -Wno-ctor-dtor-privacy -W -DLIBICON V_PLUG -DARM -DXMLCONFIGHOMEDIR=\"/home\" -mwindows -m32 -DINSTALLDIR=\"/usr\" -DBASEDIR=\"/ebrmain/share\" -DLIBDIR=\"/usr/lib\" -DIMAGEDIR=\"/usr/share/pixm aps\" -DAPPIMAGEDIR=\"/usr/share/pixmaps/%APPLICATION_NAME%\" -DVERSION=\"0.8.1 5\" -O3 -I /home/t/work/pocketbook/src/fbreader-pocketbook/zlibrary/core/../../ zlibrary/core/include -I /home/t/work/pocketbook/src/fbreader-pocketbook/zlibra ry/core/../../zlibrary/text/include -I/usr/local/pocketbook/include/ -I/usr/loc al/pocketbook/include/c++/3.4.1/ ZLibrary.cpp In file included from /usr/local/pocketbook/include/c++/3.4.1/bits/stl_algobase .h:67, from /usr/local/pocketbook/include/c++/3.4.1/bits/char_traits. h:46, from /usr/local/pocketbook/include/c++/3.4.1/string:47, from /home/t/work/pocketbook/src/fbreader-pocketbook/zlibrary/ core/../../zlibrary/core/include/ZLDialogManager.h:23, from ZLibrary.cpp:21: /usr/local/pocketbook/include/c++/3.4.1/cstdlib:181: error: `::strtold' has not been declared /usr/local/pocketbook/include/c++/3.4.1/cstdlib:200: error: `__gnu_cxx::strtold ' has not been declared In file included from /usr/local/pocketbook/include/c++/3.4.1/iosfwd:46, from /usr/local/pocketbook/include/c++/3.4.1/bits/stl_algobase .h:70, from /usr/local/pocketbook/include/c++/3.4.1/bits/char_traits. h:46, from /usr/local/pocketbook/include/c++/3.4.1/string:47, from /home/t/work/pocketbook/src/fbreader-pocketbook/zlibrary/ core/../../zlibrary/core/include/ZLDialogManager.h:23, from ZLibrary.cpp:21: /usr/include/c++/3.4/i486-linux-gnu/bits/c++locale.h:61: error: `__locale_t' do es not name a type /usr/include/c++/3.4/i486-linux-gnu/bits/c++locale.h:75: error: expected `,' or `...' before '&' token /usr/include/c++/3.4/i486-linux-gnu/bits/c++locale.h: In function `int std::__c onvert_from_v(char*, int, const char*, _Tv, int)': /usr/include/c++/3.4/i486-linux-gnu/bits/c++locale.h:84: error: `__prec' was no t declared in this scope In file included from /usr/include/c++/3.4/i486-linux-gnu/bits/gthr-default.h:4 3, from /usr/include/c++/3.4/i486-linux-gnu/bits/gthr.h:96, from /usr/include/c++/3.4/i486-linux-gnu/bits/c++io.h:37, from /usr/local/pocketbook/include/c++/3.4.1/iosfwd:47, from /usr/local/pocketbook/include/c++/3.4.1/bits/stl_algobase .h:70, from /usr/local/pocketbook/include/c++/3.4.1/bits/char_traits. h:46, from /usr/local/pocketbook/include/c++/3.4.1/string:47, from /home/t/work/pocketbook/src/fbreader-pocketbook/zlibrary/ core/../../zlibrary/core/include/ZLDialogManager.h:23, from ZLibrary.cpp:21: /usr/local/pocketbook/include/pthread.h: At global scope: /usr/local/pocketbook/include/pthread.h:77: error: `pthread_attr_t' was not dec lared in this scope /usr/local/pocketbook/include/pthread.h:77: error: expected primary-expression before ')' token /usr/local/pocketbook/include/pthread.h:78: error: expected `,' or `...' before '*' token

Версия компилятора та же, все ключи те же. Не подскажете ли, в чём может быть проблема?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Nymin
Сообщения: 1095
Статус: -
ОС: GNU/Linux

Re: Наличие/отсутствие ошибок сборки в зависимости от компилятора

Сообщение Nymin »

Ой, ой, поправьте код, страницу растянуло
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Наличие/отсутствие ошибок сборки в зависимости от компилятора

Сообщение t.t »

Nymin писал(а):
21.04.2009 20:29
Ой, ой, поправьте код, страницу растянуло
Прошу прощения, должно было покоцать по 80 символов. Уже так и сделал.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Наличие/отсутствие ошибок сборки в зависимости от компилятора

Сообщение RasenHerz »

когда-то тоже сталкивался с подобным - гугл облазил в поисках решения вдоль и поперек, а нужного решения так и не нашел (их там десятки, если не сотни и все разные). так что тут выход один - пробовать все подряд ;)
как вариант могу предложить добавить к опциям компилятора -E (только препроцессинг), попытаться скомпилировать полученные файлы, если все пройдет удачно - слинковать их.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Наличие/отсутствие ошибок сборки в зависимости от компилятора

Сообщение t.t »

RasenHerz писал(а):
22.04.2009 01:41
когда-то тоже сталкивался с подобным - гугл облазил в поисках решения вдоль и поперек, а нужного решения так и не нашел (их там десятки, если не сотни и все разные). так что тут выход один - пробовать все подряд ;)
Всё подряд я уже пробовал. Для кросс-компиляции спас подбор конкретного тулчейна, причём кажется даже из кусочков. А от winegcc я никуда не денусь: он единственный в своём роде. По сути это обёртка над gcc, но вот gcc той же версии, вызванный напрямую (для проверки), тот же модуль собрал нормально.

RasenHerz писал(а):
22.04.2009 01:41
как вариант могу предложить добавить к опциям компилятора -E (только препроцессинг), попытаться скомпилировать полученные файлы, если все пройдет удачно - слинковать их.
Чем это может помочь? Препроцессинг на то и "пре", что всё равно полностью проходит до сборки.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5457
ОС: Gentoo

Re: Наличие/отсутствие ошибок сборки в зависимости от компилятора

Сообщение /dev/random »

Может, в путях include'а /usr/include/wine/msvcrt/ встал раньше, чем /usr/include/ ? Дело в том, что и там, и там есть stdlib.h, но функции, на которые он ругается, объявлены только во втором.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Наличие/отсутствие ошибок сборки в зависимости от компилятора

Сообщение t.t »

/dev/random писал(а):
22.04.2009 16:05
Может, в путях include'а /usr/include/wine/msvcrt/ встал раньше, чем /usr/include/ ? Дело в том, что и там, и там есть stdlib.h, но функции, на которые он ругается, объявлены только во втором.
Спасибо за наводку. В /usr/local/pocketbook/include лежали, оказывается, ещё и цигвиновские хедеры. Почистил, но теперь другая проблема:

Код: Выделить всё

/usr/include/c++/4.3/bits/basic_string.h:1945: ошибка: expected unqualified-id
before ‘(’ token

В упомянутой строке вызывается std::min, а в некоторых виндовых хедерах, предоставляемых вайном, min определён как макрофункция -- отсюда и ошибка. В /usr/include/c++/4.3/i486-linux-gnu/bits/c++config.h есть строки

Код: Выделить всё

#undef min
#undef max

именно на этот случай, но переход на gcc-4.3 ничего не изменил: ошибки всё те же. Можно это как-то обойти?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали: