CPK 2.3.1장

gurugio의 이미지

빌드 과정을 준비하기 위해 빌드 대상이 될 소스를 몇개 만들겠습니다. 소스가 저장되는 디렉토리는 src와 test가 있습니다. src 디렉토리는 CA라이브러리에 들어갈 소스들이 저장됩니다. 그리고 test 디렉토리는 CA라이브러리의 각 API를 테스트할 유닛 테스트 소스들이 저장됩니다.

현재는 configure에서 생성해준 플랫폼 정보가 있으므로 이 정보를 알려주는 API를 만들어보겠습니다. 그리고 이 정보를 화면에 출력하는 유닛 테스트를 만들어보겠습니다. 엄밀히 말하면 유닛테스트 프로그램이 화면에 데이터를 출력하고 끝난다면 테스트로서 의미가 없지만 실행 파일을 빌드하는 예제를 만들기 위해서 그렇게 만들어보겠습니다.

다음은 src/sys_info.c 입니다.

/*********************************************************************
* $Id$
*********************************************************************/

#include
#include

/**
* return CPU information as char string
* @return char type string show CPU type
*/
char *sys_info_cpu_type(void)
{
return CALIB_CFG_CPU;
}

/**
* return OS information as char string
* @return char type string show OS type
*/
char *sys_info_os_type(void)
{
return CALIB_CFG_OS;
}

두개의 함수가 정의되어있습니다. 각각의 함수는 프로세서의 정보와 운영체제 정보를 알려주는 일을 합니다. CALIB_CFG_CPU와 CALIB_CFG_OS는 configure가 생성해준 platform.h에 정의되어있는 상수입니다.

다음은 src/hello.c 입니다.

/*********************************************************************
* $Id$
*********************************************************************/

#include

/**
* return greeting message to test library
* @return char type string "hello!"
*/
char *say_hello(void)
{
static char hello[] = "hello!";
return hello;
}

hello.c는 라이브러리가 제대로 빌드되었는지 테스트해보기 위한 소스입니다. 특별히 하는 일은 없습니다.

다음은 include/sys_info.h 입니다.

#ifndef __SYS_INFO_H__
#define __SYS_INFO_H__

#include

char *sys_info_cpu_type(void);
char *sys_info_os_type(void);

#endif

다음은 include/hello.h 입니다.

#ifndef __HELLO_H__
#define __HELLO_H__

#include

char *say_hello(void);

#endif

다음은 include/calib_common.h 입니다.

#ifndef __CALIB_COMMON_H__
#define __CALIB_COMMON_H__

/*
* system-library headers common for all sources
*/

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#include
#include
#include
#include

#endif /* end of file */

calib_common.h는 각 소스들에 필요한 헤더를 모두 모아놓은 헤더입니다.

다음은 include/calib.h 입니다.

#ifndef __CALIB_H__
#define __CALIB_H__

/* include all of headers of calib
* This file is only for calib user.
* Do not include this at calib source files.
*/
#include
#include
#include
/* to be continue... */

#endif /* end of file */

calib.h는 라이브러리를 사용하는 소스들이 포함시켜야하는 헤더파일입니다. CA라이브러리의 API마다 다른 헤더 파일을 찾지 않고 calib.h 하나의 파일만 참조하도록 편의를 위해서 만든 파일입니다.

다음은 test/test_hello.c 입니다.

#include

int main(void)
{
printf("%s\n", say_hello());
return 0;
}

다음은 test/test_sys_info.c 입니다.

/*********************************************************************
* $Id:
*********************************************************************/

#include

int main(void)
{
printf("== Platform information ==\n");
printf("Found CPU is <%s>\n", sys_info_cpu_type());
printf("OS is <%s>\n", sys_info_os_type());
printf("sizeof(int) = %d\n", (int32_t)sizeof(int));
printf("sizeof(long) = %d\n", (int32_t)sizeof(long));
printf("sizeof(long long) = %d\n", (int32_t)sizeof(long long));
return 0;
}

현재의 유닛테스트는 특별히 하는 일은 없고 단지 해당 API를 호출하는 일만 합니다. 라이브러리가 정상적으로 빌드되었는지만 확인할 수 있습니다.

Hide details
Change log
r536 by gurugio on Apr 18 (4 days ago) Diff
[No log message]
Go to:
Double click a line to add a comment
Older revisions
All revisions of this file
File info
Size: 4530 bytes, 164 lines
View raw file

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.