Ich wollte etwas Wissen teilen, das ich gesammelt habe, als ich Probleme mit libpcap hatte und schnaubte, um eine Netzwerkverbindung mit hoher Kapazität (1 GB Vollduplex; maximal 2 GB Aggregat) zu schnüffeln. Die Anwendungen würden den gesamten Datenverkehr erfolgreich abhören, aber abstürzen, wenn die Dateigröße 2 GB erfasst.
Wenn Sie Probleme beim Erstellen von 2-GB-Dateien haben, obwohl Sie ein Dateisystem haben, das dies unterstützt, und / oder wenn Sie wissen, dass der Kernel dies unterstützt, ist dies das Richtige für Sie.
Antworten:
Die Unterstützung großer Dateien (> 2 GB) für Linux muss an drei verschiedenen Speicherorten erfolgen, um sicherzustellen, dass Sie nicht auf die maximale Dateigrößenbeschränkung von 2 GB stoßen:
Unterstützung für große Dateien im Kernel aktiviert
Ein Dateisystem, das große Dateigrößen unterstützt (viele Linux-basierte Dateisysteme tun dies (ext3, reiserfs> = 3.6 usw.)).
Unterstützung für große Dateien in den verwendeten Bibliotheken oder Anwendungen
Die Kernel-Unterstützung für große Dateien gibt es seit 2.4.0-test7. Wenn Sie einen benutzerdefinierten Kernel verwenden, stellen Sie sicher, dass Sie die Optionen für große Dateien enthalten haben.
Die meisten Linux-Dateisysteme unterstützen große Dateien, es kann jedoch zu Problemen bei der Verwendung eines Netzwerkdateisystems kommen.
Zuletzt müssen Bibliotheken (dh libpcap) und Anwendungen mit den gcc-Optionen -D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS = 64 kompiliert werden. Stellen Sie sicher, dass die von Ihnen verwendeten Pakete entweder mit diesen Optionen vorkompiliert sind oder Ihre eigenen rollen.
Sehen Sie hier für weitere Details.
quelle
_FILE_OFFSET_BITS
gehtO_LARGEFILE
auf dieopen
syscall auf dem richtigen Bogen, sondern_FILE_OFFSET_BITS
ist für die Portabilität bevorzugt: stackoverflow.com/questions/2888425/...Sieht so aus, als wäre dies ein Problem mit libpcap ... Wie in der ersten Antwort angegeben.
Kompilieren Sie libpcap neu oder suchen Sie eine andere Version.
quelle