Nim
クロスコンパイル

Nimクロスコンパイルのやり方(Linux->Windows版)

すいません。ネタぱくってます

すいません。なぞり記事となります。
前から気になっていたNimのLinuxでのWindows用バイナリのクロスコンパイル方法を調べていたのですが、
@hatchetさんの書かれた記事Nimクロスコンパイルのやり方を参考に調べてみた結果となります。

環境は、CentOS7です。

コンパイラ入れます

Windows用クロスコンパイラ(MinGW)を導入します。

$ sudo yum install mingw64-binutils mingw64-gcc mingw64-gcc-c++ 

やる気のないnimファイルを作成

hello.nim
echo "hello nim"

コンパイラコンフィグファイルを作成

hello.nim.cfg
# mingw用
amd64.windows.gcc.path = "/usr/bin/"
amd64.windows.gcc.exe = "x86_64-w64-mingw32-gcc"
amd64.windows.gcc.linkerexe = "x86_64-w64-mingw32-gcc"
amd64.windows.gcc.options.linker = ""                      # <--- これを空にしないとリンカエラーが出てしまいました

# linux用(なぜか入れないと動きませんでした)
amd64.linux.gcc.path = "/usr/bin/"
amd64.linux.gcc.exe = "gcc"
amd64.linux.gcc.linkerexe = "gcc"

 おもむろにコンパイル

  • Windows向けコンパイル
$ nim -c --os:windows hello.nim
  • Linux向けコンパイル
$ nim -c --os:linux hello.nim

コンパイル結果

$ ls -la      
合計 452K
drwxr-xr-x  3 xxxx xxxx  140 12月 22 18:11 .
drwxrwxrwt 16 root root  800 12月 22 16:31 ..
-rwxr-xr-x  1 xxxx xxxx 181K 12月 22 18:11 hello               <--- Linux用バイナリ
-rwxr-xr-x  1 xxxx xxxx 260K 12月 22 18:11 hello.exe           <--- Windows用バイナリ
-rw-r--r--  1 xxxx xxxx   23 12月 22 16:32 hello.nim           
-rw-r--r--  1 xxxx xxxx  279 12月 22 18:01 hello.nim.cfg
drwxr-xr-x  2 xxxx xxxx  160 12月 22 18:11 nimcache