Поддержка больших файлов не работает в программировании на C

Я пытаюсь скомпилировать общий объект (который в конечном итоге используется в Python с ctypes). Командная строка, используемая для создания объекта:

gcc -Wall -O3 -shared -Wl,-soname,borg_stream -lm -m128bit-long-double -fPIC \
    -D_FILE_OFFSET_BITS=64 -o borg_stream.so data_stream.c data_types.c \
    file_operations.c float_half.c channels.c statistics.c index_stream.c helpers.c

Библиотека правильно собирается на 32-битной ОС и делает то, что нужно для небольших файлов. Однако он не проходит модульные тесты для файлов размером более 4 ГБ. Кроме того, он устанавливает errno в EOVERFLOW при выполнении команды fseek / ftell. Однако, если я печатаюf sizeof (off_t), он возвращает 8. Если я удаляю-D_FILE_OFFSET_BITS=64, то он печатает 4. Так что похоже-D_FILE_OFFSET_BITS правильно делает свою работу.

Почему поддержка больших файлов все еще не работает? Что я делаю неправильно?

Ответы на вопрос(3)

Ваш ответ на вопрос