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

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 on cell 형 multi touch panel 사용법? [1] 문종섭 2016-09-29 204
6347 Web Application Server 또는 Web Server에 대한 질문 [2] SpecialCase 2019-03-28 207
6346 /dev/mmcblk0rpmb가 나오게 하려면 어떻게 해야 하나요? [1] 혜민아빠 2015-11-19 208
6345 CodeSourcery에 보면arm-none-linux-gnueabi 라이브러리가 세폴더로 ... biokk 2015-03-05 208
6344 Touch screen에 관해서… [1] 어떤이의꿈 2015-08-10 209
6343 PWM Timer2 Prescaler값 변경시 시스템 시간 지연 문제? [3] 루벤94 2015-10-06 210
6342 [요청] 이솝따라하기 편 닉슨클라우드 2017-01-11 210
6341 안드로이드 버튼입력 지연 [2] 아라라라기 2015-12-15 211
6340 임베디드제품에 안드로이드 앱의 install이 가능한가요 ? [3] 김진희 2015-07-24 214
6339 [debian vs ubuntu] [1] 밥줘잉 2016-11-10 216
6338 ARM Ubuntu에서 touchscreen 설정 블루스카이 2016-07-04 220
6337 혹시 RouteTable 정보 읽을 수 있는 분 있나요? file [3] 엘카 2016-04-29 224
6336 Linux booting message관련해서... [3] 박종석 2016-08-30 228
6335 [안드로이드 서비스 실행관련] [1] 밥줘잉 2015-10-09 230
6334 안전모드 진입 [1] 하하호호하하 2021-01-29 231
6333 리눅스에서 인터럽트 트랜스퍼의 폴링인터벌을 조절할 수 있는 방법이... [1] 아라라라기 2015-12-26 233
6332 S5PV210 에서 Overlay Layer적용 [1] jameskody 2015-04-03 233
6331 kernel booting시 다운현상 문의 [6] 수위타자 2015-07-24 234
6330 cat sys/kernel/debug/gpio, gpio 초기화 질문입니다. [2] k40007 2016-10-01 234
6329 안드로이드 소스를 빌드 하였는데, img 파일이 생성되지 않습니다. [4] 겟페우스 2016-10-15 234

사용자 로그인