[devel] Q: размер off_t в библиотеках и в приложении
Dmitry V. Levin
=?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Чт Авг 26 12:55:50 MSD 2004
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
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20040826/f16eec94/attachment-0001.bin>
Подробная информация о списке рассылки Devel