Я хотел перекомпилировать 'xxd' (написанный на C), поэтому я установил CodeBlocks в качестве IDE.
Казалось, что все прошло хорошо, пока я не обнаружил, что не могу писать за барьером 2,0 ГБ ...
Я читал, что «gcc» нужно перекомпилировать ... (Звучит немного драматично ..)
Я читал, что могу использовать «fread64 ()» вместо «fread». () '... (не работает)
Я читал кое-что о параметрах компилятора (?) ... но я заблудился в этот момент?
Я удивлен, что это не сработало «из коробки», так как я думал, что ограничение в 2,0 ГБ было древней историей, поскольку дефолты идут ... опять не так? :(
[ 118] Моя ОС 32-битная, на 32-битном оборудовании.
Есть ли простой обойти эту проблему?
PS .. Я был очарован ПРЕДУПРЕЖДЕНИЯ: раздел 'info xxd' (..only on 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» в toto, он, скорее всего, имел бы работал нормально ...
Так что для любого, кто заходит на эту страницу, следующее может иметь некоторое значение:
Я предполагаю, что аналогичные настройки будут применяться к другим 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
Кроме того, я обнаружил этот фрагмент при поиске решения ...
Какие макросы предопределены gcc? ... в терминале:
У меня была та же проблема - не удалось записать файл размером более 2 ГБ. Моя ОС была 64-битной, точка монтирования была jfs2, а мой fsize = -1. Все, что я сделал, это изменил fopen в моей программе на fopen64 и вуаля!