안드로이드에서 리눅스 시스템 프로그래밍을 실습하고 싶을 때가 있습니다.
android\system\core 폴더에서 simple_proc 폴더 하나를 생성합시다.
android\system\core\simple_proc
다음과 같이 메이크 파일을 하나 작성한 후 android\system\core\simple_proc 폴더에서 Android.mk 이름으로 저장합시다.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := \
test.cpp \
LOCAL_MODULE_TAGS := optional
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_STATIC_LIBRARIES := \
libadbd \
libbase \
libfs_mgr \
liblog \
libcutils \
libc
include $(BUILD_EXECUTABLE)
컴파일하려는 소스 코드이름은 test.cpp 이고 생성하려는 프로그램 이름도 test입니다.
test.cpp 소스 코드 구현부는 다음과 같습니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
int i = 0;
for( i = 0; i < 100; i++) {
printf("Tracing Log \n");
sleep(5);
}
return 0;
}
위와 같이 코드 작성 후 test.cpp로 코드를 저장합시다.
다음 명령어를 입력해서 안드로이드 빌드 설정을 합니다.
source build/envsetup.sh
lunch
아래 폴더로 이동합시다.
android/system/core/simple_proc
mm . -B 명령어로 모듈을 빌드합시다.
android/system/core/simple_proc$ mm
test 프로그램이 생성되면 다음 명령어로 디바이스에 프로그램을 복사합니다.
adb push test /data/
adb shell 명령어 입력 후 다음과 같이 test 프로그램 권한을 부여합니다.
chmod 0777 /data/test
이번에는 test 프로그램을 실행합시다. 다음 명령어를 눈여겨봅시다.
adb shell /data/test
while true; do ps | grep logd ;sleep 1;done
1초 간격으로 프로세스 리스트를 출력하는 스크립트입니다.
최근 덧글