arm-linux-gnueabi-gcc를 사용하는 안드로이드용 정적 Chello world 교차 컴파일
저는 해당 사항에 대해 NDK 독립형 툴체인이나 코드 소스를 사용하는 것이 아니라 arm-linux-gnueabi-gcc를 사용하여 C에서 정적 헬로 월드를 구축하고 싶습니다.
Ubuntu에서...
저는 다음과 같은 일을 했습니다.
sudo apt-get install gcc-arm-linux-gnueabi
이렇게 하이씨를 만들었어요
#include <stdio.h>
int main(int argc, char** argv) {
printf("hello world\n");
return 0;
}
다음과 같이 정리했습니다.
arm-linux-gnueabi-gcc -static hi.c -o hi
이런 에뮬레이터로 작동시켰습니다.
adb push hi /data/hi
adb shell /data/hi
하지만 이해가 갑니다
[1] Illegal instruction /data/hi
제가 어떤 단계를 잊었나요?과거 경험으로 볼 때 이 "일"이 효과가 있었어야 했지만, 제가 분명히 이 일을 망쳤어요.
아키텍처/cpu를 지정해 봅니다.컴파일러가 에뮬레이터가 처리할 수 있는 것보다 더 높은 아키텍처 버전으로 코드를 생성하는 것처럼 들립니다.
작동할 수 있습니다.
arm-linux-gnueabi-gcc -static -march=armv5 hi.c -o hi
우분투 데스크톱에서 코드벤치 컴파일러로 작동했습니다.https://sourcery.mentor.com/sgpp/lite/arm/portal/release2029
다음 명령을 사용하여 정적 이진을 만듭니다.
arm-none-linux-gnueabi-gcc -o hello -static hello.c
전화기로 밀어 넣습니다.
adb push hello /data/local/tmp
가서 실행해 보세요.
adb shell
$ chmod 755 /data/local/tmp/hello
$ /data/local/tmp/hello
단말기에 Hello World가 인쇄됩니다.전화로도 할 수 있습니다.터미널 에뮬레이터 또는 SL4A 배시 셸을 사용하여 실행합니다.
데비안 머신(내 경우에는 VM)에서 이 작업을 수행하면 모든 것이 잘 된 것 같습니다.우분투에서 비슷한 작업을 하는 것이 무엇이 잘못되었는지 잘 모르겠습니다.레오가 제안한 대로일 수도 있지만 확인할 수 없습니다.그래도 이 방법이 당신에게 효과가 있을 겁니다.
http://www.cnx-software.com/2012/01/16/installing-emdebian-arm-cross-toolchain-in-debian/
누군가 이 링크를 추가했지만 설명에서 언급한 툴체인을 사용하지 않고 있습니다.관심 있는 사람이 있을 때를 대비해 놔두는 것.
http://tariqzubairy.wordpress.com/2012/03/09/arm-binaries-static-library-for-android/
안드로이드 내에서는 gcc-arm-linux-androideabi 형태로 컴파일되지 않은 사용자-랜드 애플리케이션을 실행할 수 없는 것으로 알고 있습니다.
당신의 코드는 저에게 효과가 있습니다.
Ubuntu에서 컴파일하여 /data/local/tmp로 푸시했습니다.
그리고 chmod 777 안녕.
마지막으로 잘 작동합니다.
데이터 폴더의 권한을 확인했습니까?대신 local을 사용해 보세요! 그냥 adb shell을 사용한 다음 cd를 실행 파일이 푸시된 폴더에 넣고 ./hi를 시도하면 됩니다.이건 그냥 권한 문제인 것 같습니다.
언급URL : https://stackoverflow.com/questions/9324772/cross-compiling-static-c-hello-world-for-android-using-arm-linux-gnueabi-gcc
'programing' 카테고리의 다른 글
PowerShell로 텍스트 파일의 빈 줄 제거 (0) | 2023.10.15 |
---|---|
타입스크립트로 Angular에서 @Directives(@Components)에 여러 파라미터를 전달하는 방법? (0) | 2023.10.15 |
jQuery ajax inside loop 문제 (0) | 2023.10.15 |
Wordpress에서 사용자 지정 게시물 유형에 대한 템플릿 만들기 (0) | 2023.10.15 |
.success and .error로 Angularjs에서 $q 약속을 확장하려면 어떻게 해야 합니까? (0) | 2023.10.15 |