他のコンピュータで使用できるように、私のHaxeプログラムのコマンドラインバージョンをコンパイルしようとしています。これらのコンピュータには必ずしもHaxeがインストールされているわけではないので、静的リンクプログラムを作成する必要があります。結果は、動的にリンクされているがスタティックリンクされたHaxe cppプログラムのビルド
haxe -main mj.MJ -cpp outCpp -D HXCPP_M64 -D static_link
:私は私のプログラムのようにバージョンをコンパイルしようとした
$ file outCpp/MJ
MJ: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, ...
、その結果に実行ファイルは、これらのライブラリがインストールされていないコンピュータ上で作業されていません。
$ ./MJ
./MJ: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./MJ)
明らかに "-D static_link"で十分ではありません。次に、mj/MJ.hxファイルに
package mj;
#if cpp
import cpp.link.StaticStd;
#end
(Haxe - Create a C++ Stand-alone executableを比較)を追加しました。後に再実行:
haxe -main mj.MJ -cpp outCpp -D HXCPP_M64 -D static_link
まだ動的にリンクされたファイルを...私は、Linux上で行うために他に何が必要ですか?
PS:
$ haxe -version
3.4.2
Fyi、「HaXe」ではなく「Haxe」と綴られています。 5年ほど前に変更されました。 :) – Gama11
アップデートのためのah tks – quant
実際の質問について - 答えはありませんが、 '-D static_link'は静的にリンクされた_library_を生成するので、' mj.MJ'はおそらく以前のコンパイルから残されています'libmj.MJ.a'のようなもの)と全く同じ実行可能ファイルがありません。 – Gama11