Problema con archivos en C

Estoy intentando hacer alguna cosa con archivos y C, pero por lo que veo, no deja abrir archivos >= 2GB, (supongo que sera por que en alguna parte se usa algun entero con signo de indice)

Aqui viene mi pregunta, como puedo manejar archivos mas grandes con C
En proncipio me interesa para linux, pero si puede ser mas general, mejor

Un saludo
Bueno, eso se llama LFS (Large File Support), encontrarás bastantes resultados si buscas esos términos. Alguna vez me he encontrado con algún fopen64, fseeko y alguna función más que, creo, está relacionada con eso. Pero en fin, ni idea del tema.

http://learn-from-the-guru.blogspot.com/2008/02/large-file-support-in-linux-for-cc.html
http://www.suse.de/~aj/linux_lfs.html
Gracias por las respuestas

Eso me deberia solucionar el problema por ahora

Pero tengo un par de dudas

Si abro un archivo con fopen64, los offsets que le pase a fseek siguen siendo los mismos o tengo que pasarle algun tipo de 64bit

Por otro lado, veo que esto tambien se puede solucionar añadiendo la opcion -D_FILE_OFFSET_BITS=64 al compilador (¿esto es como definir una macro?)

Como es preferible hacerlo, ¿con esta opción o usando fopen64?

Una cosa mas, imagino que C++ tendra el mismo problema, que soluciones hay para C++?

Un saludo
3 respuestas