El soporte de archivos grandes no funciona en la programación en C

Estoy tratando de compilar un objeto compartido (que finalmente se usa en Python con ctypes). La línea de comandos utilizada para construir el objeto es:

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

La biblioteca se basa correctamente en un sistema operativo de 32 bits y hace lo que necesita para archivos pequeños. Sin embargo, falla las pruebas de unidad para archivos de más de 4 GB. Además, establece errno en EOVERFLOW cuando se realiza un fseek / ftell. Sin embargo, si imprimo sizeof (off_t), devuelve 8. Si elimino-D_FILE_OFFSET_BITS=64, luego se imprime 4. Así que parece-D_FILE_OFFSET_BITS está haciendo correctamente su trabajo.

¿Por qué el soporte para archivos grandes todavía no funciona? ¿Qué estoy haciendo mal?

Respuestas a la pregunta(3)

Su respuesta a la pregunta