2010-03-01 2 views
3

다음과 같은 문제가 있습니다. CodeBlocks를 사용하여 Linux Ubuntu 9.10에서 내 응용 프로그램을 컴파일했습니다. 그것은 libmysql, jasper ...와 같은 거의 라이브러리를 사용하지 않는 C 프로그램입니다. 컴파일 된 프로그램을 데비안 2.6.18을 실행하는 원격 시스템에 복사했지만 응용 프로그램을 chmodded + x하지만 ./my_app를 호출 할 때 여전히 " 그러한 파일이나 디렉토리가 없습니다. "데비안에서 C 프로그램을 실행할 때의 문제

대상 시스템에서 내 프로그램을 컴파일해야합니까? 프로그램에 필요한 모든 라이브러리가 대상 시스템에 설치되었는지 확인하십시오.

어떤 조언을 주셔서 감사합니다.

+2

"해당 파일 또는 디렉토리가 없습니다."... 올바른 장소에 파일을 복사 했습니까? "ls"를 사용하여 나열 해보십시오. – codaddict

+0

my_app이 실행중인 디렉토리에 있는지 __really__ 확신합니까? 그리고 아키텍처가 호환 가능합니까? –

+0

예, Im 100 % 확실, ls 및 dir은 디렉토리에 있음을 보여줍니다. – NumberFour

답변

2

귀하의 진단 시도 (LDD) 및보고 된 오류 메시지 (동적 실행 파일이 아닌 그러한 파일이 없음)는별로 도움이되지 않습니다. "file my_app"의 출력이 아마도 더 많은 지표 일 것입니다. 그러나 당신은 노력에 나서지 않아도됩니다. 많은 데비안이 우분투와 바이너리 호환되지 않는다는 사실 많은 내용이

: the Wiki에 우분투 말을 claimng 사람에서.
...
분명히 말하면, 다시 말하면, 의 기록입니다. 은 다른 배포본과 "이진 호환성"을 목표로하지 않습니다. 왜? ... 한마디로
, 우리는 소스 코드에 초점을 협력 과정으로 무료 소프트웨어 믿고 응용 프로그램 및 바이너리 비트 특정에 초점을 맞추고 독점 과정 에이 우수한 을 고려하기 때문이다.

그래, 다시 컴파일해야합니다.

+0

그래서 다시 컴파일하는 것이 명백하게 유일한 방법이었습니다. 귀하의 답변에 감사드립니다. – NumberFour

2

대상 시스템에 공유 라이브러리가없는 것 같습니다. 바이너리에서 ldd <binary name> (필수 동적 라이브러리 목록)을 실행하고 나열된 라이브러리가 대상 시스템에 있는지 확인하십시오.

+0

bash는 이러한 경우 오류를 발생시키는가요? –

+0

작업 디렉토리가 라이브러리 검색 경로의 일부이므로 오류 메시지 일 수 있습니다. –

+0

LDD를 시도했지만 동적 실행 파일은 아닙니다. 그렇다면이게 무슨 뜻입니까? – NumberFour

1

나는이 문제가 라이브러리와는 아무런 관련이 없다는 것을 확신한다. (다른 오류 메시지가있을 수있다.)

프로그램이 대상 시스템에없는 파일을 열려고 시도하지 않았는지 확인하십시오. 그렇게 할 수 있으며 "No such file ..."메시지만으로 자동으로 실패합니다.

+0

뭔가 찾을 수 없으면 프로그램이 다른 오류로 실패합니다. 그리고 최소한 출력물에 인쇄 할 것입니다 ... 그냥 전혀 실행되지 않습니다. 사실은 SSH (퍼티) 콘솔을 통해이를 실행하려고 시도하지만, 그렇게 생각하지 않을 수도 있습니다. – NumberFour

+0

그래도 라이브러리가 누락 된 경우 다른 오류로 인해 실패했을 것입니다. SSH가 근본 원인이어서는 안됩니다. 그것은 백만 시간 동안 저에게 효과가있었습니다 ... –

관련 문제