ABI

application binary interface


EABI

embedded application binary interface


None-EABI

특정 OS에 맞춘 EABI가 아니라는 뜻


ABI는

응용 프로그램 - 운영체제,

응용 프로그램 -  해당 라이브러리,

응용 프로그램의 구성 요소 간에서 사용되는 낮은 수준의 인터페이스이다.,


ABI 와 API 비교

API -> 소스코드

ABI -> 바이너리


결론

난 cross-compile을 할려고 했는데, target platform이 EABI인 arm-none-eabi를 설치했다.

헛 짓을 며칠 하다 위의 내용을 알고 arm-none-gnueabi로 다시 설치.


eabi는 arm-none-gnueabi를 컴파일 할 때 사용 한단다.


arm-none-eabi를 gnu target을 컴파일 하면


/home/kang/다운로드/arm-2013.05/bin/../lib/gcc/arm-none-eabi/4.7.3/../../.. /../arm-none-eabi/bin/ld: warning: cannot find entry symbol _start; defaulting to 00008018

/home/kang/다운로드/arm-2013.05/bin/../lib/gcc /arm-none-eabi/4.7.3/../../../../arm-none-eabi/lib/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':

sbrkr.c:(.text+0x18): undefined reference to `_sbrk'

/home /kang/다운로드/arm-2013.05/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../.. /arm-none-eabi/lib/libc.a(lib_a-writer.o): In function `_write_r':

writer.c:(.text+0x20): undefined reference to `_write'

/home /kang/다운로드/arm-2013.05/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../.. /arm-none-eabi/lib/libc.a(lib_a-closer.o): In function `_close_r':

closer.c:(.text+0x18): undefined reference to `_close'

/home /kang/다운로드/arm-2013.05/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../.. /arm-none-eabi/lib/libc.a(lib_a-fstatr.o): In function `_fstat_r':

fstatr.c:(.text+0x1c): undefined reference to `_fstat'

/home /kang/다운로드/arm-2013.05/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../.. /arm-none-eabi/lib/libc.a(lib_a-isattyr.o): In function `_isatty_r':

isattyr.c:(.text+0x18): undefined reference to `_isatty'

/home /kang/다운로드/arm-2013.05/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../.. /arm-none-eabi/lib/libc.a(lib_a-lseekr.o): In function `_lseek_r':

lseekr.c:(.text+0x20): undefined reference to `_lseek'

/home /kang/다운로드/arm-2013.05/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../.. /arm-none-eabi/lib/libc.a(lib_a-readr.o): In function `_read_r':

readr.c:(.text+0x20): undefined reference to `_read'

collect2: error: ld returned 1 exit status


위와 같은 오류가 나타난다.


target platform 에 대해 더 자세하게는 아랫글을 보도록 하자

EABI/ELF


RTOS systems or "bare metal" systems where no operating system is present. These toolchains should not be used to build Linux kernels or applications.


GNU/Linux


Systems running "full" Linux, i.e., Linux on CPUs with an MMU. Use Sourcery CodeBench to build both the Linux kernel and applications.


출 처 : http://blog.daum.net/wonjin92/37


+ Recent posts