[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