MKBundle2를 사용하여 포장 한 후, 대상 기계는 libmono.so에 대해 불평하고 있습니다.왜?
문제
MKBundle2의 목적이 모노 응용 프로그램을 실행하기 위해 모노가 설치되지 않은 기계를 허용하는 것이 었습니다. 그러나 그것은 libmono.so 포장하는 것처럼 보이지 않습니다. 나는 그것이 그것이 가정되었는지 여부를 확실하지 않지만, 묶음을 실행할 때 libmono.so.0을 찾을 수 없다고 확신하지 못합니다. 왜 그 파일을 찾고 있을까요? 그리고 필요한 경우 왜 그곳에서는 어디든 찾을 수 있습니까? 묶음에 있어야 할 것 같으면 왜 mkbundle2가 거기에 넣지 않았습니까? 모든 종속성을 포함하여 "-deps"옵션을 사용하고 있습니다. 나는 뭔가를 놓치고 있니?
--static 옵션을 추가 한 후에는 대상 시스템 에서이 결과를 얻습니다.
처리되지 않은 예외 : System.TypeInitializationException : System.Windows.Forms.xplatui의 유형 이니셜 라이저에 의해 Throw 된 예외가 발생했습니다. ---> System.DllNotFoundException : libc AT (래퍼 관리 대상) system.windows.forms.xplatui : uname (intptr) system.windows.forms.xplatui..cctor () [0x00000] in : 0
export mono_log_level= 디버그 추가 정보보기 :
mono-info : dllimport로드를 시도합니다 : 'libc'. Mono-Info : Dllimport Loading 위치 : 'libc.so'. MONO-INFO : DLLIMPORT 오류 라이브러리로드 : '/usr/lib64/libc.so : 잘못된 ELF 헤더'. Mono-info : Dllimport로드 라이브러리 : './libc.so'. MONO-INFO : DLLIMPORT 오류 라이브러리 './libc.so : 공유 오브젝트 파일을 열 수 없습니다 : 해당 파일 또는 디렉토리 없음'. Mono-Info : Dllimport Loading : 'libc'. mono-info : dllimport 오류 라이브러리로드 라이브러리 'libc : 공유 오브젝트 파일을 열 수 없습니다 : 해당 파일 또는 디렉토리 없음'.
호환되지 않는 하드웨어로 컴퓨터에서 실행하려고하는 것은 내가 꺼냅니다. 두 시스템 모두 SUSE Linux Enterprise Server 11 (x86_64)입니다.
해결책
- deps :이 옵션은 참조 된 모든 어셈블리를 모두 묶습니다. 명령 행 옵션에 나열된 어셈블리. 이것은 자체 포함 된 이미지를 배포하는 데 유용합니다.
명령 줄에서 어셈블리를 참조하는 것도 잊지 않으셨습니까?
이 글꼴 :
모노 커뮤니티> 일반> 모노 커뮤니티> mkbundle, 정적 , lgmodule
MKBundle 은이 어셈블리를 포장하는 데 책임이 없습니다. 누락 된 glib 관련 패키지를 설치하여 사용자가 문제를 해결했습니다.
정적 매개 변수를 살펴보십시오. 여기 :
- static : 기본적으로 mkbundle은 모노와 glib 에 동적으로 연결됩니다. 이 옵션 대신 정적으로 링크를 해제합니다.