Сейчас все объясню.
Изначально в посиксе был заложен размер файла до 2 Гб.
Но это стало неактуально и теперь можно делать файлы большего размера.
Для работы с такими большими файлами надо в функию открытия файла добавить флажек. Например:
open("/home/vugluskr/dvd_rip.mpg", O_RDONLY |
O_LARGEFILE);
Соответственно не все программы могут его указывать.
Теперь надо выяснить конкретно в чем косяк.
Для этого создай файл больше 2 гб чем-нибудь.
например вот этой программкой:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
int fd = open("test.big", O_CREAT | O_WRONLY | O_LARGEFILE);
char buf[2048];
long long size_so_far = 0;
while(size_so_far < ((long long)1 << 32))
{
write(fd, buf, 2048);
size_so_far += 2048;
}
close(fd);
return 0;
}
компиллируется так: gcc src.cpp

.
Если успешно создаст файл в 4 Гб, то значит твой тар глючит.
Берешь его исходники и вставляешь выделенный жирным флажек в
тот open, который отвечает за сохранения файла на диск.
От так вот!