Как я могу получить gcc для записи файла размером более 2.0 ГБ?

Я хотел перекомпилировать «xxd» (написанный на C), поэтому я установил CodeBlocks в качестве среды IDE.

Кажется, все хорошо, как я понял, я не мог писать за барьером 2.0 ГБ …

Я читал, что «gcc» нужно перекомпилировать … (Это звучит немного драматично ..)
Я читал, что я могу использовать «fread64 ()» вместо «fread ()» … (не работал)
Я кое-что прочитал о параметрах компилятора (?) … но я теряюсь в этот момент?

Я удивлен, что он не работал из коробки, так как я считал, что ограничение 2,0 ГБ – это древняя история, поскольку дефолты идут … снова неправильно? 🙁

Моя ОС 32-разрядная, на 32-битном оборудовании.
Версия gcc представлена ​​в виде: gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3

Есть ли простой способ обойти эту проблему?

PS .. Я был увлечен разделами WARNINGS : «информация xxd» (… только на Linux;)

Я рекомендую добавить -D_GNU_SOURCE если используется #include <features.h> . Это позволит обеспечить поддержку большого файла. Прочтите начало /usr/include/features.h для получения дополнительной информации:

 ... _LARGEFILE_SOURCE Some more functions for correct standard I/O. _LARGEFILE64_SOURCE Additional functionality from LFS for large files. _FILE_OFFSET_BITS=N Select default filesystem interface. .... _GNU_SOURCE All of the above, plus GNU extensions. 

Простой #define, кажется, все, что нужно … (программа пишет сейчас 2 ГБ.)

Возможно, причина, по которой она не была скомпилирована, заключается в том, что я скомпилировал одну программу из гораздо большего набора («xxd» является частью «vim») …

Если бы я собрал «vim» в тотализаторе, он, скорее всего, сработал нормально …

Таким образом, для всех, кто приходит на эту страницу, может иметь значение следующее:
Я предполагаю, что подобные настройки применимы и к другим IDE.

 Adding #defines * Using CodeBocks (as a global setting) ===================================== Settings Compiler and Debugger... [Compiler Settings] [#defines] ... Add the following _FILE_OFFSET_BITS="64" * Using CodeBlocks (for a given Project) ====================================== Properties Build Options [Compiler Settings] [#defines] ... Add the following _FILE_OFFSET_BITS="64" * Directly into gcc's command line ================================ gcc -D_FILE_OFFSET_BITS="64" * Add a #define directly to the source ==================================== #define _FILE_OFFSET_BITS 64 

Кроме того, я обнаружил этот фрагмент, в то время как googling для решения …
Какие макросы предопределены gcc? … в терминале:

  • touch foo.h; cpp -dM foo.h

У меня была такая же проблема – не удалось написать файл размером более 2 ГБ. Моя ОС была 64 бит, точка монтирования была jfs2, а мой fsize = -1. Все, что я сделал, это изменение fopen в моей программе на fopen64 и voila!