windowsで作られたC言語のプログラムをmacで実行するときのあれこれ
windowsでのプログラムもらうと動かない原因を調べた話。
2018/10/19
講義の参考資料としていただいたzipファイル内のプログラムをとりあえず動かしてみたら
-bash: ./プログラム名.exe: cannot execute binary file
て感じで動かせないよーって怒られた。
まあだろうなって思ったので解決の方法。
わかる人にはわかるけどテンパってたら気づけないこともあるかもしれないし。
原因は単純でテキストエンコーディングの設定がmacに合っていないから。
illegal character encoding in string literal
[-Winvalid-source-encoding]
て感じのエラー文の後,
...<82><BB><82>̖<BC><91>O<82>̃t<83>@<83>C<83><8B><82>͑<B6><8D>݂<B5><82>܂<B9><82><F1><81>...
が延々と続いています。うん!
配布した教授もmacでは動かないので適当なエディタで変換してくださいとおっしゃっていました。
サクサク確認して修正していこう。
C言語のプログラムなので用意するのはコンパイラとテキストエディタのみ。
上二つの準備方法がわからない人は調べてどうにかしてください。私も過去に調べてると思うのでこのブログにもだいたいの手順メモは出てくる。
これそうじゃないかな。中身見返してないからわからないけど。もっと適当なサイトがネットの海にはいっぱいあるはずなので探してください。
エンコーディングはmi先生にお願いしました。
mi先生の話も上の記事にあるんじゃないかな…たぶん。(´・ω・)
miでプログラムのソースを開いてウィンドウの上の方、確認してみたらこんな感じでした。
( )内にある用にwindows用のやつです。これを変えます。
「 Shift_JIS(Windows拡張)→UTF-8 」
ついでにこっちも変えておく (必要ないですがまあ念のため)
「 CR+LF(windows)→LF(Mac/UNIX) 」
前者はテキストエンコーディング設定、日本語等の文字の変換規則どれを使うかの設定、後者は改行コードの設定。
どちらも上図のように変更して保存するだけです。
これで保存したらターミナルでコンパイル。
gccでもclangでも構いません。
注意事項として、ソースコードが参照しているヘッダーファイルも確認しておきましょう。windows向けになっているようでしたらそちらも設定を変えて保存してからコンパイルすること。
以上~~。