On Fri, 2005-06-03 at 16:56 +0200, Christian Schneider wrote:
Hallo!
Am Donnerstag, 2. Juni 2005 16:53 schrieb Dierk Fröhling:
Michael Wenger wrote:
Christian Schneider schrieb am 02.06.2005 15:33 :
Wie lese ich aus Dateien > 2GB bzw. schreibe in diesen? Bei C-Funktionen wird scheinbar nur ein long zur Positionierung verwendet, also ist da auch bei 2GB Schluss?
Das hängt extrem vom verwendeten Compiler ab. Ab g++ 3.4 sollte es mit
C++ möglich sein. Auf [1] steht zumindest dies: | Large File Support (files larger than 2 GB on 32-bit systems).
Werde mal einen neueren installieren.
Für den gcc gibt es Compilerflags: -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
Die muss ich bei gcc >= 3.4 mit angeben?
Wo ist sowas dokumentiert z.B. in /usr/include/features.h
(auf gcc.gnu.org findet sich dazu nichts)? Es ist ein glibc-Feature und ein Kernel-Feature, mit dem GCC nur sehr entfernt etwas zu tun.
Durch die defines teilst du der GLIBC über den Compiler mit, dass davon ausgegangen wird, dass der Kernel "large files" (>2GB) unterstützt.
Außerdem könnte es am Filesystem liegen. ext2 hatte früher z.B. ein 2GB-Limit... Sehr lange ist's her.
Nein, das spielt mit. Die Datei ist schon vorhanden und liegt auf einem recht neuen (= jünger als 2 Jahre) ext3 Dateisystem. Auf den Kernel kommt es an ...
Bei SuSE gab es da mal eine "4GB"-Kernel o.ä. Ralf