Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 构建静态链接的Haxe-cpp程序_Unix_Haxe - Fatal编程技术网

Unix 构建静态链接的Haxe-cpp程序

Unix 构建静态链接的Haxe-cpp程序,unix,haxe,Unix,Haxe,我试图编译我的Haxe程序的命令行版本,以便它可以在其他计算机上使用。这些计算机不一定安装了Haxe,所以我需要创建一个静态链接程序。我试着用以下方法编译这样一个版本的程序: 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 linke

我试图编译我的Haxe程序的命令行版本,以便它可以在其他计算机上使用。这些计算机不一定安装了Haxe,所以我需要创建一个静态链接程序。我试着用以下方法编译这样一个版本的程序:

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”是不够的。我接着补充说

package mj;

#if cpp
import cpp.link.StaticStd;
#end
(比较)到mj/mj.hx文件。重新执行后:

haxe -main mj.MJ -cpp outCpp -D HXCPP_M64 -D static_link
文件仍处于动态链接状态。。。在Linux上我还需要做什么

附言:

< > C++目标上的HAXE标准库(HXCPP)使用动态链接库来实现标准特征(如“ZLIB”和“STD”库),除非在旧版本中使用<代码> -D STATICH链接>代码,但从HAXE 3.4开始,这些总是静态链接。 在当前版本中,
-D static_link
仍然影响第三方“NDLL”库,例如库

我个人使用较旧版本的Linux(如Ubuntu 12.04或14.04)来构建分发版,这是因为较旧Linux系统(或倾向于使用较旧版本的glibc的分发版,如CentOS)上的glibc存在差异


如果愿意,尝试更改以启用静态libstdc++库
If=“static_link”
,并在此处或Haxe社区上共享结果。

Fyi,拼写为“Haxe”,而不是“Haxe”。大约在5年前发生了变化。:)关于实际问题的更新-我没有答案,但是
mj.mj
可能是以前编译的遗留,因为
-D static\u link
生成了一个静态链接库(应该称为类似
libmj.mj.a
)并且根本没有可执行文件。
$ haxe -version
3.4.2