решено: _LARGE_FILES (Как открыть большой файл?)

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

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

решено: _LARGE_FILES

Сообщение drBatty »

Вот непонятно:

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

#define _LARGE_FILES

#include <stdlib.h>
#include <stdio.h>

int main()
{
    printf("%d\n", sizeof(off_t));
    return 0;
}

результат 4, а я хочу 8
Что я сделал не так?

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

[drb@lism ~]$ g++ --version
g++ (GCC) 4.1.2 20070302 (prerelease) (4.1.2-1mdv2007.1)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
_beast
Сообщения: 77
ОС: linux 2.6

Re: решено: _LARGE_FILES

Сообщение _beast »

Код:

#include <unistd.h> #define __USE_FILE_OFFSET64 #include <stdio.h> #include <stdlib.h> main() { printf("%d\n",sizeof(off_t)); }
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: решено: _LARGE_FILES

Сообщение drBatty »

_beast писал(а):
15.01.2008 13:41
/codebox

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

#include <unistd.h>
#define __USE_FILE_OFFSET64



#include <stdlib.h>
#include <stdio.h>

int main()
{
    printf("%d\n", sizeof(off_t));
    return 0;
}


всё равно четыре :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
_beast
Сообщения: 77
ОС: linux 2.6

Re: решено: _LARGE_FILES

Сообщение _beast »

localhost% ./sizeoff_t
8
localhost% gcc --version
gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


у меня 8
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: решено: _LARGE_FILES

Сообщение drBatty »

_beast, вот стал бы я тему создавать... В том то и дело, что при конфликте библиотек(или я уж незнаю чего) система откатывается на "безопасный" вариант. Мне надо что-бы у меня(как минимум) открывались большие файлы, и (как максимум) где угодно.

PS: А где вы взяли __USE_FILE_OFFSET64? Это ли не грязный хак, зависящий от дистрибутива?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: решено: _LARGE_FILES

Сообщение rm_ »

У меня оба варианта выдают 4 в 32-битной ОС, и 8 в 64-битной.
Причём в 64-битной выдаётся 8 даже если убрать #define'ы (что неудивительно, наверное).
Обе системы - свежий Debian Testing.
Спасибо сказали:
Аватара пользователя
Debris
Сообщения: 282
ОС: Debian GNU/Linux Lenny

Re: решено: _LARGE_FILES

Сообщение Debris »

Зависит от компилятора?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: решено: _LARGE_FILES

Сообщение drBatty »

да мне всё равно - что от чего зависит! Мне надо файлы больше 2Г открывать, и работать с ними. Почему winNT4.0 это умела, а Linux2008 нет? И причём тут 64х битные CPU?!
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
_beast
Сообщения: 77
ОС: linux 2.6

Re: решено: _LARGE_FILES

Сообщение _beast »

/usr/include/sys/types.h

#ifndef __USE_FILE_OFFSET64
typedef __off_t off_t;
#else
typedef _off64_t off_t;
#endif
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: решено: _LARGE_FILES

Сообщение drBatty »

_beast писал(а):
15.01.2008 14:40
/usr/include/sys/types.h
ну и что? Я это читал. Ну всё одно - 4
Вы мне найдите, где изменяется __USE_FILE_OFFSET64
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
_beast
Сообщения: 77
ОС: linux 2.6

Re: решено: _LARGE_FILES

Сообщение _beast »

вообще при записи/чтении используеться loff_t (usr/include/linux/fs.h) а он именно и равен 8,
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo

Re: решено: _LARGE_FILES

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

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

#define _GNU_SOURCE 1
#define _FILE_OFFSET_BITS 64
#include <features.h>

#include <unistd.h>


#include <stdlib.h>
#include <stdio.h>

int main()
{
    printf("%d\n", sizeof(off_t));
    return 0;
}
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: решено: _LARGE_FILES

Сообщение drBatty »

/dev/random писал(а):
15.01.2008 14:49
#define _GNU_SOURCE 1
#define _FILE_OFFSET_BITS 64
#include <features.h>

чтож. Спасибо. Работает. А где об это сакральном знании почитать можно?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Red User
Сообщения: 229
ОС: Debian

Re: решено: _LARGE_FILES

Сообщение Red User »

drBatty
Про _FILE_OFFSET_BITS в man fseeko написано
А ведь когда-то не боялись мы программы любой,
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: решено: _LARGE_FILES

Сообщение drBatty »

Red User писал(а):
19.01.2008 01:46
Про _FILE_OFFSET_BITS в man fseeko написано

Ага, целых 2 строчки.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo

Re: решено: _LARGE_FILES

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

drBatty писал(а):
15.01.2008 15:11
чтож. Спасибо. Работает. А где об это сакральном знании почитать можно?


Сорри, не сразу заметил вопрос.

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

info libc 'Feature Test Macros'
Спасибо сказали: