다른 컴퓨터에서 사용할 수 있도록 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 파일 (Haxe - Create a C++ Stand-alone executable 비교)
package mj;
#if cpp
import cpp.link.StaticStd;
#end
을 추가했다. 다시 실행 한 후 :
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