2012-01-08 2 views
0

"mono Program.exe"를 사용하여 제대로 작동하는 .Net 프로그램이 있지만 현재 동일한 컴퓨터에서 "mkbundle -o prog Program.exe --deps"를 사용하려고합니다. 다음과 같은 오류를 반환합니다 :호환되지 않는 라이브러리 건너 뛰기 (mkbundle)

/usr/bin/ld: skipping incompatible /opt/novell/mono/lib/pkgconfig/../../lib/libmono-2.0.so when searching for -lmono-2.0 /usr/bin/ld: skipping incompatible /opt/novell/mono/lib/pkgconfig/../../lib/libmono-2.0.a when searching for -lmono-2.0 /usr/bin/ld: cannot find -lmono-2.0 collect2: ld returned 1 exit status

시스템은 CentOS 5.7 on x86_64입니다. these 지침을 사용하여이 시스템에 모노를 설치했습니다. 아무도 왜 모노 작품을 알고 있지만 mkbundle하지 않아? 어떻게 해결할 수 있습니까?

답변

1

모노 (당신과 같은 x86_64 시스템에서 작동)의 32 비트 버전을 설치했을 가능성이 있지만 mkbundle은 기본 컴파일러 설정 (64 비트)으로 컴파일하려고 시도하고 라이브러리의 32 비트 버전 만 찾습니다. 이 문제를 해결하려면 시스템에 맞게 64 비트 버전의 모노를 설치하거나 (libc 및 컴파일러와 같이 나머지 32 비트 라이브러리를 설치한다고 가정) 32 비트 모드로 mkbundle로 컴파일 한 다음 mkbundle이 콘솔에 인쇄하는 컴파일러 명령 행에 대한 -m32 옵션 (mkbundle에 -c 옵션을 사용해야 함).

+0

죄송합니다. 약간 혼란 스럽습니다. 모노 또는 64 비트 버전을 설치했는지 어떻게 알 수 있습니까? 모노는/opt/novell/mono/폴더에 설치되고 거기에 lib64 폴더가 있습니다. 그런데 "모노 -V"라고 입력하면 아키텍처가 x86이라고합니다. 무슨 뜻이에요? 또한, 귀하의 솔루션을 올바르게 이해한다면, "mkbundle -c -o program Program.exe --deps"를 사용해야하고, 그 다음엔 무엇을해야합니까? –

+0

모노 -V가 x86이라고하면 32 비트 실행 파일이 있습니다. 단 하나의 모노가 설치되어 있는지 확인하십시오 (터미널에 '-a mono'가 실행 됨). – lupus

+0

해결책을 보려면 먼저 mkbundle2 --deps Program.exe를 실행하고 컴파일러 명령 행 ("cc -ggdb ..."처럼 보임)을 기록한 다음 -c 옵션과 함께 mkbundle2를 다시 실행하십시오. 컴파일러 명령 행을 실행 한 후 앞에서 설명한 것처럼 -m32 옵션을 추가하십시오. – lupus