Wie kann die Unterstützung großer Dateien unter Darwin aktiviert werden?

8

Ich habe eine C-Anwendung, die ich für Mac OS X 10.6.4 kompilieren möchte:

%Vor%

Mein gcc ist wie folgt:

%Vor%

Mein Makefile ist wie folgt:

%Vor%

Das Problem besteht darin, dass meine Anwendung Aufrufe an fseeko64 und fopen64 aufruft und den Typ off64_t für Offsets verwendet. Wenn ich meine Anwendung kompiliere, bekomme ich die folgenden Warnungen und Fehler:

%Vor%

Mein Code baut unter Linux fehlerfrei auf. Welche Änderungen kann ich an den Quellcode vornehmen, um große Dateiunterstützung beim Erstellen unter Darwin hinzuzufügen?

    
Alex Reynolds 23.10.2010, 10:14
quelle

3 Antworten

10

Bei Darwin-Datei-I / O ist standardmäßig 64-Bit (mindestens 10.5), dies wurde einfach durch Einfügen von / usr / include:

gefunden %Vor%

Alles, was Sie tun müssen, ist etwas wie

%Vor%     
mojuba 23.10.2010, 10:26
quelle
2

Während diese Frage eine angenommene, akzeptierte Antwort hat, die funktioniert, denke ich, dass die Lösung ein bisschen irreführend ist. Anstatt etwas zu reparieren, ist es immer besser zu vermeiden, es später reparieren zu müssen. .

Zum Beispiel für die Funktion fopen64 die GNU C Library Dokumente sagen:

  

Wenn die Quellen mit _FILE_OFFSET_BITS == 64 auf einer 32-Bit-Maschine kompiliert werden, ist diese Funktion unter dem Namen fopen verfügbar und ersetzt so transparent die alte Schnittstelle .

Sie können einfach dieselbe Funktion fopen auf Systemen verwenden, die standardmäßig 64-Bit-E / A unterstützen, und Sie können das _FILE_OFFSET_BITS=64 -Flag auf 32-Bit setzen, ohne dass Sie überhaupt Neudefinitionen schreiben müssen. Das gleiche gilt für Typen wie off64_t vs. off_t .

Speichern Sie die Neudefinitionen für den Fall, wenn Sie mit Quellen von Drittanbietern umgehen und Standardfunktionen in Ihrem eigenen Code verwenden müssen.

    
aergistal 05.09.2015 08:53
quelle
0

Die fseeko und ähnliche Befehle arbeiten mit großer Dateiunterstützung, so dass fseeko64 nicht benötigt wird usw. Apple man page

    
Mark 23.10.2010 10:26
quelle

Tags und Links