system management
1748027 メンバー
4959 オンライン
108757 解決策
新規ポスト

cppコマンドで入力できるファイルサイズは2GBが限界か?

 
TLSG01
貴重なコントリビューター

cppコマンドで入力できるファイルサイズは2GBが限界か?

ディスクをlargefileにして

2GB OVER のtext fileを作ったのですが、

cppでは下記のメッセージが出てしまいます。

cppの64bit版なんて有るのでしょうか?

c8000_s1_% /lib/cpp LARGEFILES.txt > LARGEFILES.txt.

cpp: "", line 0: error 6: Unable to open source file LARGEFILES.txt.
6件の返信6
hazelwood
信頼あるコントリビューター

cppコマンドで入力できるファイルサイズは2GBが限界か?

APIの点から言えば、64bitオブジェクトじゃなくても、2GB超のファイルを扱うことはできます。

(残念ながら、cppが対応しているかどうかは知りませんが。)

ただし、ソースファイルの編集が大変そうなので、複数ファイルに分割することを考えたほうがいいのではないでしょうか?

TLSG01
貴重なコントリビューター

cppコマンドで入力できるファイルサイズは2GBが限界か?

2GB Overのファイルは機械的にシュミレータが

生成する為に2GBのファイルをEDITすることは

有りません。

emacsでも2GBのファイルは開けませんでした。

当方の言語処理プログラムで

余分な文字や#includeの処理を

cppで肩代わりさせている為に

2GB Overのファイルをcppに入れたいわけですが。

元はと言えば「cppをCコンパイルから起動される

以外で使わないように」と記載されているに

cppを単独で使うような言語処理プログラムを

作った人がよろしくないのです。

のらりん
新しいメンバー

cppコマンドで入力できるファイルサイズは2GBが限界か?

% /lib/cpp LARGEFILES.txt > LARGEFILES.txt

とありますが入力のファイルと出力のファイルが同じなのが原因ということはないでしょうか?

TLSG01
貴重なコントリビューター

cppコマンドで入力できるファイルサイズは2GBが限界か?

HPに問い合わせた結果

cppは現在over 2GB に対応していないとの

回答でした。

net検索ではgccを64bit対応にして

over 2GB を可能にした人がいるらしいが

そのソースコードはまだ見つけていません。
hazelwood
信頼あるコントリビューター

cppコマンドで入力できるファイルサイズは2GBが限界か?

> net検索ではgccを64bit対応にして

> over 2GB を可能にした人がいるらしいが

> そのソースコードはまだ見つけていません。

多分、コンパイルオプションに-D_FILE_OFFSET_BITS=64を追加すれば、すむと思います。

(または、+DD64オプションで64bitバイナリにする。)
TLSG01
貴重なコントリビューター

cppコマンドで入力できるファイルサイズは2GBが限界か?

試しにcppを使っていない別の言語処理プログラム

について -D_FILE_OFFSET_BITS=64を追加して

makeしたところエラー無くover 2GBを処理しました。

厳密な検証はこれからですが

生成物のファイルサイズが変更前と同じだったので

正常に動作しているものと思われます。