용으로 컴파일 크로스, 나는 다음과 같은 일반적인 설정으로 crosstool-NG를 사용하여 내 자신의 툴체인 출시 때 전화 :문제()는 NDK 독립형 툴 체인 및 생체 공학 몇 가지 제한을 바탕으로 안드로이드
- 의 binutils-2.22 gfortran와
- GCC-4.5.3을 사용
- 의 glibc-2.14.1
- 커널 헤더-2.35.7
- 아치
이것을 사용하여 실행 파일을 빌드하고 libc, ld-linux 등을 비롯한 모든 종속성을 Android 장치에 업로드합니다. 나는 수동으로 ld-linux.so.3 --library-path로 실행 파일을 실행한다 ...
이것은 매우 복잡한 실행 파일이며, system() 호출을 수행하면 모두 작동하는 것처럼 보인다. 시스템 ("pwd") 또는 시스템 (NULL)과 같은 기본 사항은 상태 (찾을 수 없음)로 127이됩니다. 나는 더 나아가 응답을 수집하는 대신는 popen 사용하는 경우, 내가 얻을 :
* 의 glibc *이 감지 더블 무료 또는 손상 무슨 일
? 누구도 비슷한 일에 성공 했습니까? 사용 권한 문제가 있습니까? system() 호출을 불가능하게 만드는 Android와 근본적으로 다른 점이 있습니까? 어떻게 바이오닉이 시스템과 popen (소스 코드)을 처리하는지 알아낼 수 있습니다. 왜냐하면 NDK를 사용하면 system() 호출을 할 수 있다고 생각하기 때문입니다.
언제 glibc 오류가 발생합니까? 'popen' 콜? 아니면 그 후 어떤 전화? –
'/ bin/sh'은 Android에 없습니다. 그것은'/ system/bin/sh' AFAIK에 있습니다. glibc는'/ bin/sh'을 사용합니다. – nneonneo
nneonneo-system() 호출이 glibc에서 처리되는 위치를 알고 있습니까? 특히, 소스 코드에서 어디에? 소스 코드를 수정하는 것 외에는 환경 변수와 같이 보이는 부분을 재정의 할 수있는 더 좋은 방법이 있습니까? – corbin