
gcc で linux のソフトの開発をやっております。いろいろな都合でWindowsとソースの共通化をするため日本語はシフトjisを使っているのですが、たとえば"ソ"などで\をつけないといけません。しかし、これだと今度はWindowsで通らなくなります。私はゲーム機の開発もやってるのですが、私が使っているゲーム機用のgccは、なにかパッチがあててあるのか、LANG=C-SJIS と環境変数を定義しておけばシフトjisを通してくれます。linuxの普通のgccでも同じようなことをできるようにするパッチはないでしょうか?
No.1ベストアンサー
- 回答日時:
GCCのバージョンが3.4以上であれば、次のオプションを付けることでシフトJISが使えるようになります。
-finput-charset=cp932 -fexec-charset=cp932
見ての通り、-finput-charsetがソース文字集合を、-fexec-charsetが実行文字集合を指定するオプションです。これを使えば、ソース文字集合と実行文字集合が違っても大丈夫です。
ちなみに、cp932ではなくSHIFT_JISとするとまともに動作しませんのでご注意ください。
なるほど!! できました。ありがとうございました。
ただ、仕事で使っているいくつかのサーバーで gcc -v やってみたら、3.4.x はそんなに多くはなく、ちょっと古いのは 3.2.x で、もっと古いのは 2.9.x でした。3.2.x ではコンパイルエラーになってしまいました。gccをバージョンアップとなりますと、関連するライブラリ関係も全部入れ替え、サーバーで動いている実行ファイルも configuer からやり直しですか? あ、これはよく考えると他で聞いたほうがいいみたいですね。
No.2
- 回答日時:
GCC 3.3.x以前のバージョンで使える多バイト文字処理用のパッチもあるにはありますが、それを使うにはGCCのビルドからやり直さなければなりません。
外付けの対応方法もいくつかありますが、ここではMCPPを紹介しておきます。これは、プリプロセッサだけを摩り替える方法です。
このプリプロセッサはGCC 3.4.x以降の多バイト文字対応を諦めた形跡がありますが、逆に3.3.x以前であれば使えると思います。
ただし、プリプロセッサを摩り替えることになるので、GCCの臭い所を突いたコーディングをしていると、エラーになったり、誤動作する危険性もあるので十分に注意してください。
他には、実行文字集合がシフトJISでなくてもよいのであれば、Makefileの中で、いったんiconvやnkfを使ってEUC-JPに変換してから、コンパイルするというのも一つの方法かと思います。
参考URL:http://www.m17n.org/mcpp/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
ビルドとリビルドの違いを教え...
-
「fatal error C1189」を回避す...
-
エクセルVBAではRound...
-
クリティカルエラー Expressio...
-
sys/types.hの必要性について
-
gcc で シフトJISを通す方法を...
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
ILSpyで、デコンパイルできない。
-
セミコロンについて
-
【VC++6.0(MFC)】警告「LINK : ...
-
cc hello.cってやっても、、、
-
コンパイルできない・・。(VC+...
-
VB6で開発中…標準モジュール間...
-
asp.net
-
他のLinuxでも動くa.outの作り方
-
PRO*C コンパイルエラー
-
Visual C++ 6.0 で作成したプロ...
-
複数のサブディレクトリを一緒...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
Makefile作成時の拡張子.oとは?
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
マクロ コンパイルがグレーバック
-
C言語でヘッダファイルにグロー...
-
ILSpyで、デコンパイルできない。
-
【VC++6.0(MFC)】警告「LINK : ...
-
「fatal error C1189」を回避す...
-
1 つ以上の複数回定義されてい...
-
クリティカルエラー Expressio...
-
動的な変数名のつけ方について
-
C言語のコンパイルができません
-
C++コンパイル時に『 C1083: in...
-
セミコロンについて
-
他のLinuxでも動くa.outの作り方
-
includeと#include
-
ビルドとリビルドの違いを教え...
-
コンパイルエラー:ユーザ定義...
-
MFCのエラーについて
おすすめ情報