2014-05-16 2 views
0

Windows에서 C#으로 작성된 응용 프로그램을 가지고 있지만 우분투 12.04 (32 비트)에서 다시 컴파일 한 다음 실행시 무료로 프로덕션 환경에서 우분투 12.04 (64 비트).12.04에서 실행되지 않는 12.04에서 실행되는 모노 응용 프로그램

원본에서 다시 컴파일 한 Mono 2.10.8.1을 사용하고 있습니다 (Windows 64 WaitHandle 최대 제한을 제거해야했지만 다른 이야기입니다).

내 문제는 12.04 (서비스가 모노 서비스로 운영되며 관리자가 호스팅하는 서비스)에서 행복하게 실행되는 반면 서비스가 시작될 때 우분투 14.04에서 다음 예외가 발생한다는 것입니다. 클라우드 리눅스 인스턴스가 아닌 로컬 호스팅) 호스팅

TypeInitializationException: An exception was throw$ 
at (wrapper managed-to-native) Mono.Unix.Native.Syscall:_L_ctermid() 
at Mono.Unix.Native.Syscall..cctor() [0x00000] in <filename unknown>:0\ 

(거기의 InnerException, 분명히,하지만 그 또한 TypeInitializationException) 릴리스에서 별도로

, 두 시설 사이의 유일한 차이 (의 12.04 생산을하고 14.04 잠재적 인 생산을하지 않는 것)은 12.04에 내 바이너리가

에서

~/theserviceimrunning/

새로운 상자는

/opt에의 반면/theserviceimrunning/

내가 생각하지 않을

이있을 것 릴리스 간의 차이점, 특히 tarball에서 다시 컴파일 한 Mono의 동일한 버전을 사용하고있을 때이 문제가 발생합니까? 그렇지 않다면 내가 알아야 할 것이 있습니까?

+0

왜/opt를 선택 했습니까? – knocte

답변

0

나노 로그를 보려면 예외 로그를 ​​보는 것이 가장 먼저 문제였습니다. 줄을 감싸지 않고 $로 잘라내어 실제 문제를 숨겼습니다.

실제 예외는 LD_LIBRARY_PATH가 환경 변수로 추가되지 않아 libMonoPosixHelper.so가 누락되었습니다.

Unhandled Exception: System.TypeInitializationException: 
An exception was thrown by the type initializer for Mono.Unix.Native.Syscall --- 
System.DllNotFoundException: libMonoPosixHelper.so 

자세한 내용과 수정 사항은 this question을 참조하십시오.

+0

이것은/opt가 표준 접두사가 아니기 때문에 주로 LD_LIBRARY_PATH를 사용해야합니다./usr/local 또는/usr과 같은 표준 접두어를 사용하면 필요하지 않습니다. – knocte

+0

@knocte 머리 부분을 가져 주셔서 감사합니다. – johnc

+0

(사용하는 모노 위키를 읽을 수 있기 때문에/opt를 사용했을 수도 있지만이 위키 페이지는 http : // mono-project를 읽었을 가능성이 큽니다. .com/Parallel_Mono_Environments는 두 개의 모노 설치를 동시에 실행하는 데 매우 특별한 요구 사항이있는 사람들을위한 것입니다. – knocte

관련 문제