Hi, On Thu, Aug 26, 2004 at 02:08:22PM +1100, Dmitry Lebkov wrote: > Наступил на неприятные грабли и не знаю, как их правильно > обойти. Пакет maildrop-1.7.0. В source tree входят несколько > библиотек и, собственно, сам maildrop. Каждый компонент > имеет собственный configure-скрипты. Проблема в следующем: > при сборке бинарника maildrop с поддержкой MySQL, для > инициализации переменной CPPFLAGS, используются > 'mysql_config --cflags'. > > $ mysql_config --cflags > -I/usr/include/mysql -pipe -march=i586 -mcpu=i686 \ > -fomit-frame-pointer \ > -D_FILE_OFFSET_BITS=64 \ > -DHAVE_ERRNO_AS_DEFINE \ > -DONE_THREAD > > При сборке сопутствующих библиотек эти флаги игнорируются. > В итоге, из за '-D_FILE_OFFSET_BITS=64' получаем различный > размер типа off_t в самом приложении (8 байт) и в библиотеках > (4 байта). При вызове функций, использующих параметры типа > off_t получаем полный $%&#@*. Разумеется. > Вопрос: как _идеологически_верно_ обойти подобные грабли? Либо использовать -D_FILE_OFFSET_BITS для компиляции всего, что общается с файловой системой, либо не использовать. Выборочное использование чревато крупными неприятностями. > В случае с maildrop я просто убрал вызов 'mysql_config --cflags' > из configure, но меня терзают смутные сомнения ... %) Тем самым вы как минимум убрали поддержку работы с >2G на 32-битных платформах. Рекомендую добавить в configure.ac всех библиотек AC_SYS_LARGEFILE. -- ldv