6.2.1. ARM 리눅스 실행 가능 파일 빌드

ARM Linux에서 사용할 수 있는 SVr4 형식의 ELF 실행 가능 파일을 생성하려면 --sysv 명령 행 옵션을 사용합니다.

Note

--sysv를 사용하면 링커는 사용자가 명령 행에서 지정하는 모든 스캐터 파일을 무시합니다.

기본적으로 실행 가능 파일의 기본은 0x8000입니다. 공유 오브젝트가 명령 행에 지정될 경우, 링커는 이 오브젝트를 사용하여 참조를 확인하고 동적 실행 가능 파일을 만듭니다.

링커가 명령 행에서 발견한 공유 오브젝트는 실행 가능 파일에 추가될 라이브러리의 목록에 포함됩니다(자세한 내용은 라이브러리 검색, 선택 및 스캔 참조).

ARM 리눅스에서 작업하는 경우 다음 사항에 유의하십시오.

공유 오브젝트 빌드

공유 오브젝트는 ARM 리눅스 실행 가능 파일 빌드에서 설명한 정적 및 동적 링크를 확장합니다. 로드 영역의 기본 주소는 0으로 설정된 후 리눅스 동적 링커에 의해 재배치됩니다.

내보낸 RW 데이터가 공유 오브젝트에 있을 경우에는 위치 독립적인 코드와 데이터를 사용해야 합니다. 이 경우, --apcs /fpic를 사용하여 파일을 컴파일하거나 어셈블한 후, --fpic 링커 옵션을 사용하여 파일을 공유 오브젝트에 링크해야 합니다.

SVr4 공유 오브젝트를 빌드하려면 --shared 명령 행 옵션을 사용합니다.

Note

공유 오브젝트에는 보통 엔트리 포인트가 없습니다. 그러나 엔트리 포인트를 설정할 수는 있습니다. 빌드 중인 오브젝트가 동적 링커일 경우 엔트리 포인트를 설정해야 합니다.

리눅스 ABI 태그 사용

실행 가능 파일이 리눅스 표준 기본 사양 v1.2를 준수하려면 ELF 사양에서 설명된 대로 참고 섹션으로 구성된 SHT_NOTE 타입의 .note.ABI-tag라는 섹션을 포함해야 합니다.

--linux_abitag 명령 행 옵션을 사용하여 현재 빌드 중인 실행 가능 파일에 대한 최소 호환 커널 버전을 지정할 수 있습니다. 예를 들면 다음과 같습니다.

armlink ... --sysv --linux_abitag 2.2.5 main.o

이렇게 하면 리눅스 커널 v2.2.5 이상과 호환된다고 정의된 정적 실행 가능 파일에 main.o가 링크됩니다. 명령 행에 최신 커널을 요구하는 공유 오브젝트를 지정할 경우, 출력 파일의 커널 조건이 이에 일치하도록 증분됩니다.

리눅스 ABI 태그 및 표준 기본 사양 이용에 대한 자세한 내용은 http://www.linuxbase.org를 참조하십시오.

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0206GK
Non-Confidential