기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

1.5 NDK로 다음과 같은 간단한 C application을 컴파일하려고 하니 에러가 발생하더군요.


#include <stdio.h>
int main(void)
{
        printf("Hello Worldn");
}


$ /android-ndk-1.5_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-gcc hello.c -o hello2 -static
In file included from hello.c:1:
/android-ndk-1.5_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/include/stdio.h:50:23: error: sys/cdefs.h: No such file or directory
/android-ndk-1.5_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/include/stdio.h:51:24: error: sys/_types.h: No such file or directory
In file included from hello.c:1:
/android-ndk-1.5_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/include/stdio.h:160: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'extern'
/android-ndk-1.5_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/include/stdio.h:229: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__BEGIN_DECLS'
/android-ndk-1.5_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/include/stdio.h:377: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__BEGIN_DECLS'
/android-ndk-1.5_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/include/stdio.h:388: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'static'


여기서 여러가지 의문이 발생했습니다.

1. 저런식으로 ndk에 포함된 gcc를 사용하면 안되는것인가? 무엇인가 option을 더 추가해야 되는가?

2. ndk는 native source를 컴파일하지만, shared/static library만 만들수 있고, 실행가능한 application은 만들어주지 않는것인가?


구글링을 해보니 다음의 웹사이트에서 platform source에 있는 pre-compile된 gcc, bionic의 헤더와 binary로 native C application을 컴파일 하는 방법이 나와 있더군요.

http://android-tricks.blogspot.com/2009/02/hello-world-c-program-on-using-android.html


위의 웹사이트에 나와있는 스크립트를 사용하면 직접 bionic과 링크하여 컴파일 할수 있지만, 스크립트를 수정해야 하는 부분도 있고 해서, ndk를 사용하려고 하는데 의외로 ndk사용이 쉽지가 않네요.


GNU library를 사용하면 기존에 사용하던 toolchain으로 간단하게 컴파일될텐데(물론 static으로 link해야 하지만), 파일크기 문제도 있고, 또한 피치못하게 GNU license를 피해가야 할 경우가 있어 문제가 되는것 같습니다.


도움 부탁드립니다.



파일럿

2010.01.15 00:45:10
*.136.60.126

저같은 경우는 따로 NDK를 사용하지 않고

developmentpdkpndksamplessample 안에 있는 샘플을 참조하여

developmentpdkpndkconfigconfig.mk 파일을 수정하여 컴파일 하였습니다.

 

위와 같이 makefile 없이 그냥 gcc 명령만으로 컴파일하기는 쉽지 않습니다.(참조하는 header들과 library들을 모두 지정해 주셔야 합니다.)

플랫폼에 추가해서 만드시면 좀 편하긴 한데, 컴파일 속도가 좀 문제가 되죠.

 

그리고 실행 가능한 application이 apk를 말씀하시는것이라면 말씀한신대로 만들수 없습니다.

실행 가능한 바이너리와 so(shared library)만 만들수 있죠.

 

그리고 GNU library를 사용하여 컴파일 하면 android shell에선 실행이 되지 않습니다. 반드시 bionic C library를 사용하여 컴파일 하여야 합니다.

최종환

2010.01.15 00:49:46
*.82.146.170

Android.mk 파일을 다음과 같이


 15 LOCAL_PATH := $(call my-dir)
 16
 17 include $(CLEAR_VARS)
 18
 19 LOCAL_MODULE    := hello-jni
 20 LOCAL_SRC_FILES := hello-jni.c
 21
 22 include $(BUILD_EXECUTABLE)
 23 #include $(BUILD_SHARED_LIBRARY)

하시고 해당 hello-jni.c를

#include <stdio.h>

int main(void)

{

printf("Hello Birdkiller..~n");

}

 

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
6348 binder에서 BnInterface나 BpXXX이렇게 붙는데요 Bn과 Bp는 어... [1] BellFive 2010-07-28 10800
6347 LCD 디스플레이 관련 질문입니다. file [2] 조현호 2011-08-31 10458
6346 가상머신(virtualbox, vmware) 드라이버 설정 환경 문의 입니다. [2] pedor11 2014-01-03 9804
6345 [질문/완료] 무선랜 붙여서 핑 날렸는데,, 문제 발생.. [5] 장병남 2008-09-23 9650
6344 Q&A 게시판 사용시 주의사항. 고현철 2006-04-05 9516
6343 [완료] Crosstool 0.43으로 toolchain 제작 시도중에. [2] 김성재 2008-12-03 9379
6342 Arndale + MT-6620 [2] nsys 2012-12-08 9355
6341 MCU / AP [6] 김민욱 2018-08-27 9036
6340 NAK bailout생기면서 I2C 통신 fail이 나네요. 훌러덩 2012-04-10 8975
6339 [질문] x86(AMD geode LX800) 보드는 구입이 가능한가요?[완료] [12] 김성주 2007-03-15 8958
6338 kernel source중 gpio와 관련된 질문입니다. [1] 소노공 2010-12-10 8086
6337 USB storage 마운트 어떻게들 하시나요. <== [완료] [11] 박영학 2006-09-23 8044
6336 [s3c2440] FTDI USB Serial converter사용하고 싶은데요??[완료... [8] 김창연 2006-10-24 7849
6335 Android 포팅 방법에 대한 질문 [11] 전병환 2009-04-09 7746
6334 안드로이드폰에서 통화중 녹음 [3] 최강산 2010-07-30 7421
6333 안드로이드 커널 소스 다운 받는 방법.. [3] 이성호 2009-03-12 7309
6332 6410을 이용해서 영상 Encoder/Decoder를 구현하려고 합니다. [9] 이종우 2009-03-04 7281
» NDK로 native C application 컴파일하기 [2] [春] 2010-01-15 7151
6330 임베디드 보드의 top 명려에 대한 질문입니다.(우분투top 비교, 프로... [9] pedor11 2014-03-05 7024
6329 안드로이드에서 SD카드 인식이 않되네요. [4] 유태경 2009-12-06 7004

사용자 로그인