为什么在Linux上不能创建大于2 GB的文件?


8

我想分享一些我在使用libpcap时遇到的问题并嗅探来嗅探高容量(1 GB的全双工;最大2 GB的总和)网络链接时所学到的知识。应用程序将成功嗅探所有流量,但是当捕获的文件大小达到2 GB时将崩溃。

如果您在创建2 GB文件时遇到问题,即使您有支持它的文件系统,和/或您知道内核也支持它,这也适合您。


以为我会与社区分享这一点;让我知道是否需要进行任何更改。
罗马尼亚,2009年

Answers:


22

需要在三个单独的位置解决Linux的大文件支持(> 2GB),以确保您不会遇到最大2 GB的文件大小限制:

  1. 内核中启用了大文件支持

  2. 支持大文件大小的文件系统(许多基于Linux的文件系统都支持(ext3,reiserfs> = 3.6等))

  3. 使用的库或应用程序中的大文件支持

从2.4.0-test7开始,内核就已经支持大文件了。如果使用自定义内核,请确保已包含大文件选项。

大多数Linux文件系统支持大文件,但是使用网络文件系统可能会出现问题。

最后,需要使用gcc选项-D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS = 64来编译库(即libpcap)和应用程序。检查以确保您正在使用的软件包已预编译了这些选项,或者自行包装。

有关更多详细信息,请参见此处


3
代替“ FILE_OFFSET_BITS”,它应该是“ _FILE_OFFSET_BITS”。
朱利诺(Juliano)

你是对的。已更正。
romandas

1
如果您不赞成,请至少要体面并告诉我原因
rom09年9

注:_FILE_OFFSET_BITS通过O_LARGEFILEopen上正确的系统调用拱,但 _FILE_OFFSET_BITS最好的可移植性:stackoverflow.com/questions/2888425/...
西罗桑蒂利冠状病毒审查六四事件法轮功

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.