2011-10-04 2 views
3

새 '소스 코드 파일을 컴파일하기 위해 내'android.mk '프로젝트 파일에 몇 개의 새로운 문을 추가했는데 오류가 있습니다. 모든 * .cpp 파일을 컴파일 한 후 :arm-linux-androideabi-g ++. exe : CreateProcess : 파일이나 디렉토리에 오류가 없습니다.

arm-linux-androideabi-g++.exe: CreateProcess: No such file or directory 
make: *** [/cygdrive/...] Error 1 

다른 사람이 비슷한 오류가 있습니까? 왜 이렇게되었는지, 경로를 수정하지 않았으며, 소스 코드 파일을 추가했는지 알 수 없습니다.

미리 감사드립니다.

답변

9

그것은 명령 줄 Cygwin에서 너무 긴 것이 될 수있다 (여기 참조 : How to build OpenSSL on Android/Linux ?)

이 짧은 경로 어딘가에 모든 것을 옮겨보십시오. 난 그냥 android.mk 파일에 몇 가지 파일을 추가 한 후 오류가 있었고/cygdrive/c/projects와 같은 어딘가에 안드로이드 프로젝트를 일시적으로 옮길 수있었습니다. 나는 그곳에 그것을 지었고 그 후에 모든 것을 뒤로 옮겼습니다.

+2

omg는 내가 너무 오래 고민했던 문제를 믿을 수 없다. 너무 길다 .. 감사합니다! – Bruce

1

이 문제는 빌드 PC의 메모리 부족으로 인한 것일 수 있습니다.
최근에 가상 Windows XP SP3 32 비트에서 동일한 문제가 발생했습니다. 링크 단계에서 시스템이 최대 2.6GB의 메모리를 소비하려고 시도했지만 한계는 2.2GB로 설정되었고 충분하지 않았습니다 필요한 스왑 파일을 할당하기 위해 디스크의 여유 공간 ...

+0

감사합니다. 바로이 문제를 겪었고 몇 가지 배경 응용 프로그램을 닫으면 컴파일이 가능해졌습니다. – Allan

-2

나는 당신과 같은 오류가있었습니다. 새 시스템 (VM의 Windows 등)을 사용하고 다시 시도하십시오. 다른 소프트웨어 충돌로 인해 발생할 수 있습니다. OS에 너무 많은 도구가있을 수 있습니다.

3

CreateProcess()에 전달 된 명령 줄 문자열의 최대 길이는 32,768 자입니다. 길이는 모든 인수를 포함합니다.
덧붙여서, Android NDK 빌드 시스템은 소스 파일의 전체 경로가 너무 길고 소스 파일 수가 너무 많아서 개체 파일 경로가 너무 길고 많기 때문에 32,768 자보다 긴 명령 줄을 생성 할 수 있습니다. 링크 할 때 모든 전체 경로가 명령 행에 추가됩니다.
프로젝트 파일을 Windows 파일 시스템의 루트에두고 "C : \ E"와 같은 한 문자로 이름을 변경하여 모든 경로가 이전보다 짧아 지도록하여이 문제를 해결했습니다.

+0

정답입니다. – dns

+0

NDK 개발자를위한 중요 답변. –

관련 문제