windowsで作られたC言語のプログラムをmacで実行するときのあれこれ

windowsでのプログラムもらうと動かない原因を調べた話。

原因はテキストエンコーディング設定がmacと相性悪いから。

エディタでエンコード設定し直してコンパイルするだけ。

 

 

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言語のプログラムなので用意するのはコンパイラテキストエディタのみ。

上二つの準備方法がわからない人は調べてどうにかしてください。私も過去に調べてると思うのでこのブログにもだいたいの手順メモは出てくる。 

yuhfa.hatenablog.com

これそうじゃないかな。中身見返してないからわからないけど。もっと適当なサイトがネットの海にはいっぱいあるはずなので探してください。

 

エンコーディングはmi先生にお願いしました。

mi先生の話も上の記事にあるんじゃないかな…たぶん。(´・ω・)

 

 

miでプログラムのソースを開いてウィンドウの上の方、確認してみたらこんな感じでした。

f:id:yuhfa:20181019234343p:plain

 

( )内にある用にwindows用のやつです。これを変えます。

Shift_JIS(Windows拡張)→UTF-8

f:id:yuhfa:20181019234512p:plain

ついでにこっちも変えておく (必要ないですがまあ念のため)

「 CR+LF(windows)→LF(Mac/UNIX) 」

f:id:yuhfa:20181019235120p:plain

前者はテキストエンコーディング設定、日本語等の文字の変換規則どれを使うかの設定、後者は改行コードの設定。

どちらも上図のように変更して保存するだけです。

f:id:yuhfa:20181019235527p:plain

これで保存したらターミナルでコンパイル

gccでもclangでも構いません。

 

注意事項として、ソースコードが参照しているヘッダーファイルも確認しておきましょう。windows向けになっているようでしたらそちらも設定を変えて保存してからコンパイルすること。

 

以上~~。