6.2.2. 심볼 액세스

링크 단계에 포함된 다른 비공유 오브젝트에 의해 참조되는 공유 오브젝트의 심볼이 있습니다. 심볼 테이블은 그러한 심볼을 확인하는 방법을 제공합니다. 심볼에 대한 참조가 있을 경우, 그 참조는 공유 오브젝트에서 가져온 것으로 정의됩니다.

ARM 링커는 심볼 버전을 지원하므로 심볼 테이블에 대해 더욱 유용한 정보를 제공할 수 있습니다.

심볼 버전 관리 정보는 심볼 버전 관리 테이블을 포함한 공유 오브젝트가 로드될(그리고 버전 관리된 심볼에 대한 참조가 일치할) 경우 심볼 테이블에 추가됩니다. 버전 스크립트 파일을 사용하여 내보낸 심볼 목록을 지정할 수 있습니다. 예를 들면 다음과 같습니다.

armlink file_1.o file_2.o --sysv --shared -o libfoo.so --symver_script ver_script.txt

심볼 확인

링커는 공유 및 비공유 오브젝트의 심볼을 동일한 방식으로 확인합니다. 정의되지 않은 참조가 공유 오브젝트에 있는 정의와 일치할 경우, 링커에서 이를 동적 심볼 테이블에 배치하여 해당 참조를 가져옵니다.

심볼 가져오기와 내보내기

조정 파일을 사용하는 경우, 내보낸 심볼을 지정하려면 EXPORT를 사용합니다.

명령 행에서 지정한 공유 오브젝트의 동적 심볼 테이블에 일치하는 정의가 있으면, 링커는 정의되지 않은 심볼 참조를 가져옵니다. 그러면 이 심볼은 내보낸 심볼로 간주됩니다.

공유 오브젝트를 빌드할 때는 조정 파일 명령의 영향을 받았거나 소스 파일의 __declspec(dllexport)를 사용하여 내보낸 심볼만 내보냅니다. 조정 파일 명령을 지정하지 않으면 링커는 기본적으로 모든 전역(숨겨지지 않은) 심볼을 내보냅니다.

숨겨지지 않은 심볼은 어셈블러 소스에 DYNAMIC 또는 PROTECTED 표시 유형 속성을 가졌거나, C 소스 코드에 __declspec(dllimport) 또는 __declspec(dllexport)가 포함된 것입니다.

실행 가능 파일을 빌드할 경우, 리눅스 플랫폼에서 이미지를 정확히 실행하는 데 필요한 심볼만 내보냅니다. 즉, 링커는 공유 오브젝트에 있는 모든 심볼을 가져옵니다. 파일 조정 명령은 추가 심볼이 동적 심볼 테이블에 삽입되도록 정의하는 데 사용됩니다.

Note

armlink는 남아 있는 정의되지 않은 참조에 대해 오류를 발생시킨다는 점에 유의하십시오.

EXPORT 사용에 대한 자세한 내용은 조정 파일 명령을 참조하십시오.

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