ld 명령
용도
오브젝트 파일을 링크합니다.
구문
ld [ -D Number ] [ -e Label ] [ -G ] [ -H Number ] [ -K ] [ -m ] [ -M ] [ -o Name ] [ -r ] [ -s ] [ -S Number ] [ -T Number ] [ -u Name ] ... [ -v ] [ -V ] [ -z ] [ -Z String ] ... [ -b Option ] ... [ -L Directory ] ... { -f FileID ... -l Name ... InputFile ... }또는ld -bsvr4 [ -d[y | n] ] [ -D Number ] [ -e Label ] [ -G ] [ -H Number ] [ -K ] [ -m ] [ -M ] [ -o Name ] [ -r ] [ -R Path ] [ -s ] [ -S Number ] [ -T Number ] [ -u Name ] ... [ -v ] [ -V ] [ -z [ defs | nodefs ] ] [ -z multidefs ] [ -z [text | nowarntext | warntext ] ] ] [ -Z String ] ... [ -b Option ] ... [ -L Directory ] ... { -f FileID ... -l Name ... InputFile ... }설명
연계 편집기 또는 바인더라고도 하는 ld 명령은 오브젝트 파일, 아카이브 및 가져오기 파일을 하나의 출력 오브젝트 파일로 결합하여 외부 참조를 분석합니다. 이 명령은 실행될 수 있는 실행 가능 오브젝트 파일을 생성합니다. 또한 -s 플래그 없이 ld 명령을 지정하면 ld 명령에 대한 다른 호출에서 출력 파일을 InputFile 매개변수로 사용할 수 있습니다. 기본적으로 ld 명령은 해당 출력을 작성하여 a.out 파일에 배치합니다.
ld 명령은 사용자가 모든 입력 오브젝트 파일을 다시 나열할 필요 없이 프로그램을 다시 링크할 수 있습니다. 예를 들어 대규모 프로그램의 개체 파일 하나가 변경되면 명령줄에 새 개체 파일과 이전 프로그램을 나열하고 프로그램에 필요한 공유 라이브러리를 함께 나열하여 프로그램을 다시 연결할 수 있습니다. 예제를 참조하십시오.
ld 명령은 사용자가 명령행에서 지정하는 순서대로 입력 파일을 링크합니다. 한 파일을 두 번 이상 지정하면 처음 지정한 파일만 처리됩니다. -bI (대문자 i), -bimport, -bkeepfile, -f또는 -l (소문자 L) 플래그를 사용하거나 InputFile 매개변수로 하나 이상의 입력 파일을 지정하십시오. (' -bI, ' -bimport' 또는 ' -bkeepfile ' 플래그는 ' I' , ' import' 또는 ' keepfile ' 옵션과 함께 사용되는 ' -b ' 플래그입니다)
운영 체제에서 실행되는 프로그램을 생성할 때 파일을 링크하려면 cc 명령을 사용하십시오. cc 명령은 공통 옵션 및 필수 지원 라이브러리와 함께 ld 명령을 호출하므로 사용자가 명령행에서 지정하지 않아도 됩니다. (이 정보는 /etc/xlC.cfg 또는 /etc/vac.cfg 구성 파일에서 읽습니다.)
- 링크 모드
' ld ' 명령은 32비트 개체 및 프로그램과 64비트 개체 및 프로그램을 연결할 수 있지만 32비트 개체와 64비트 개체는 서로 연결되지 않을 수 있습니다. 링크 모드를 지정하기 위해 OBJECT_MODE 환경 변수 또는 -b32 또는 -b64 옵션을 사용할 수 있습니다.
- 아카이브 파일
아카이브 파일은 공유 개체를 포함한 가져오기 파일과 개체 파일을 포함하는 복합 개체입니다. 아카이브 파일에 유형이 인식되지 않는 멤버나 다른 아카이브 파일이 있는 경우 ld 명령은 경고를 발행하고 인식되지 않는 멤버를 무시합니다. 아카이브 파일에 포함된 오브젝트 파일의 헤더에 '
F_LOADONLY비트가 설정되어 있으면 ' ld ' 명령은 해당 멤버를 무시합니다. 이 비트는 기존 애플리케이션을 로드하고 실행할 수 있도록 아카이브 파일에 남아 있는 이전 버전의 공유 오브젝트를 지정하는 데 사용됩니다. 새로운 애플리케이션은 공유 오브젝트의 새 버전(즉, 아카이브의 또 다른 멤버)과 링크됩니다.- 공유 오브젝트
' ld 명령에 대한 다른 호출로 생성된 공유 객체는 XCOFF 헤더에 '
F_SHROBJ비트가 설정된 객체 파일입니다. 공유 오브젝트는 실행시간에 해석되는 외부 기호를 정의합니다. -bnso 또는 -bnoautoimp 옵션을 지정하는 경우, ld 명령은 공유 오브젝트를 일반 오브젝트 파일로 처리하고 파일이 스트립된 경우에는 링크가 실패합니다.일반적으로 입력으로 사용되는 공유 오브젝트는 공유 오브젝트의 기호가 참조되는 경우 출력 파일의 로더 섹션에만 나열됩니다. 그러나 런타임 링커를 사용하는 경우 참조되는 심볼이 없더라도 공유 객체가 나열되도록 할 수 있습니다. -brtl 옵션을 사용하면 아카이브 멤버가 아닌 명령행에 나열된 모든 공유 오브젝트가 출력 파일에 나열됩니다. 시스템 로더는 프로그램이 실행될 때 이러한 모든 공유 객체를 로드하며, 이러한 공유 객체가 내보낸 심볼은 런타임 링커에서 사용할 수 있습니다. 아카이브 멤버인 공유 오브젝트는 아카이브의 반입 파일에 의해 자동 로드를 사용하도록 설정되지 않는 한 자동으로 로드되지 않습니다. 자동 로딩을 사용하려면 파일 형식 가져오기 및 내보내기(-bI: 및 -bE: 플래그)를 참조하세요.
- 파일 반입 및 반출
반입 파일은 실행시간에 해석할 외부 기호를 식별하는 ASCII 파일입니다. 가져오기 파일은 가져온 심볼을 정의하는 공유 개체를 식별합니다. 시스템 로더가 실행시간에 그 기호를 찾고 해석합니다. 가져오기 파일의 첫 번째 행이 #! (#, 느낌표) 로 시작하는 경우 명령행에서 파일을 일반 InputFile로 지정할 수 있습니다. 그렇지 않으면 -bI 또는 -bimport 옵션을 사용하여 반입 파일을 지정해야 합니다.
반출 파일은 또 다른 실행 가능 오브젝트 파일이 반입할 수 있는 외부 기호를 식별하는 ASCII 파일입니다. 반출 파일의 파일 형식은 반입 파일의 파일 형식과 같습니다.
- 라이브러리
라이브러리는 이름이 .a 또는 가능한 경우 .so로 끝나는 파일입니다. 라이브러리를 지정하려면 절대 또는 상대 경로 이름을 지정하거나 -l Name양식으로 -l (소문자 L) 플래그를 사용할 수 있습니다. 마지막 양식은 libName.a 파일을 지정하거나 rtl 옵션이 사용될 때 여러 디렉토리에서 검색할 libName.so 파일을 지정합니다. 이러한 검색 디렉토리에는 -L 플래그로 지정되는 디렉토리와 표준 라이브러리 디렉토리 /usr/lib 및 /lib가 포함됩니다.
주: -l Name 플래그 대신 절대 또는 상대 경로 이름을 사용하여 공유 오브젝트를 포함하는 아카이브 파일 또는 공유 오브젝트를 지정하는 경우, 경로 이름은 출력 파일의 로더 섹션에 있는 가져오기 파일 ID 문자열에 포함됩니다. -bnoipath 옵션으로 이 작동을 재정의할 수 있습니다.- 처리
ld 명령은 모든 입력 파일을 아카이브 여부에 관계없이 같은 방식으로 처리합니다. 여기에는 기존 기호를 복제하는 기호 정의만 버리고 모든 오브젝트의 기호 테이블이 포함됩니다. ld 명령의 일부 다른 버전과 달리 아카이브 파일을 정렬하지 않아도 되므로 참조가 정의에 우선합니다. 또한 명령행에서 두 번 이상 아카이브 파일을 나열하지 않아도 됩니다.
ld 명령 플래그의 순서는 입력 오브젝트 파일, 라이브러리 및 반입 파일과 함께 사용되는 플래그를 제외하고는 처리 방식에 영향을 주지 않습니다. 이러한 플래그는 -L, -f, -l (소문자 L), -bkeepfile및 -bI (대문자 i) 입니다. 플래그는 다음 순서로 처리됩니다.
- -L 플래그는 -l(소문자 L) 플래그로 지정된 라이브러리를 찾기 위해 검색 디렉토리의 리스트에 디렉토리를 추가합니다. 디렉토리는 지정된 순서대로 검색됩니다. 모든 -L 플래그는 -l 플래그가 처리되기 전에 처리됩니다.
- ld 명령은 InputFile 매개변수, -f 플래그로 지정된 파일, -l(소문자 L) 플래그로 지정된 라이브러리를 지정된 순서대로 처리합니다.
- ld 명령은 모든 기타 오브젝트 파일과 라이브러리를 처리한 후 -bI(대문자 i) 플래그에 의해 지정된 반입 파일을 지정된 순서대로 처리합니다. 일부 오브젝트 파일을 처리하기 전에 파일을 처리해야 할 경우, 반입 파일을 -bI 플래그 없이 입력 파일로 지정할 수 있습니다. 이 경우 가져오기 파일의 첫 번째 행은 #! (#, 느낌표) 기호로 시작해야 하며 가져오기 파일은 2단계에서설명한 대로 다른 입력 파일로 처리됩니다.
- -bkeepfile 옵션은 ld 명령이 가비지 콜렉션을 수행하지 않는 입력 파일의 이름을 지정합니다. 지정된 입력 파일이 InputFile 매개변수로도 지정되거나 -f 플래그로 지정된 파일에 나열되는 경우, -bkeepfile 옵션은 파일이 처리되는 순서에 영향을 주지 않습니다. 그렇지 않으면 2단계에서 설명된 대로 다른 입력 파일과 함께 순서대로 처리됩니다.
-r 플래그 또는 -bnox 옵션을 지정하지 않거나 링크 중에 오류가 보고되지 않은 경우 ld 명령으로 생성되는 출력 파일에는 실행 권한 세트가 있습니다. 심각한 오류가 발생하거나 출력 파일이 입력 파일로 지정되고 오류가 발생한 경우에는 기존 출력 파일을 겹쳐쓰지 않습니다.
- 기호
ld 명령은 다음과 같은 사전 정의된 기호를 사용하여 특수 주소 위치를 제공하며 C 구문에서
extern char name[ ]로 선언될 수 있습니다. 기호 이름은 다음과 같습니다:항목 설명 _text프로그램의 최초 위치를 지정합니다. _etext프로그램 이후의 최초 위치를 지정합니다. _data데이터의 최초 위치를 지정합니다. _edata초기화된 데이터 이후의 최초 위치를 지정합니다. _end또는end모든 데이터 이후의 최초 위치를 지정합니다. 이들 기호를 사용하는 유일한 방법은 주소를 취하는 것입니다. 입력 파일이 이러한 기호를 재정의하는 경우 예측할 수 없는 결과가 발생할 수 있습니다. 컴파일러는 함수 포인터를 사용하여 호출을 구현하기 위해 미리 정의된 추가 심볼인 '
_ptrgl'을 사용합니다.- 가비지 콜렉션
기본적으로 ld 명령은 출력 파일을 생성할 때 참조되지 않는 제어 섹션(CSECT)을 삭제하여 가비지 콜렉션을 수행합니다.
CSECT는 코딩이나 데이터의 나눌 수 없는 단위입니다. CSECT는 다른 CSECT에 들어 있는 기호를 참조하는 재배치 항목(RLD)을 포함하는 경우 다른 CSECT를 참조합니다. 참조된 CSECT는 참조하는 모든 CSECT 또한 참조되도록 합니다. 또한 CSECT에 내보낸 기호, -u 플래그로 지정된 기호 또는 -e 플래그를 사용하여 시작점으로 지정된 기호가 포함된 경우 CSECT가 참조됩니다.
기호가 참조되지 않지만 출력 파일에서 필요한 경우, 기호를 반출하고 -u 플래그로 기호를 지정하거나 가비지 콜렉션을 억제할 수 있습니다. 가비지 콜렉션을 억제하려면 -r 플래그 또는 -bnogc 옵션을 사용하십시오. 개별 오브젝트 파일에 대한 가비지 콜렉션을 억제하려면 -bkeepfile 옵션 또는 -bgcbypass 옵션을 사용하십시오. 가비지 콜렉션이 억제되더라도 참조되지 않는 내부 기호는 삭제됩니다.
- 무시되고 지원되지 않는 플래그
ld 명령의 다른 버전과의 호환성을 위해, 일부 플래그는 인식되지만 무시됩니다. 이 플래그는 플래그 및 해당 피연산자가 무시되었음을 나타내는 메시지를 생성합니다. 플래그가 무시되어도 추가 처리 없이는 ld 명령이 중지되지 않습니다. 다음 플래그는 무시합니다.
-ANumber -bnostrcmpct -n -bfilelist -bstrcmpct -N -bfl -BNumber -Q -bforceimp -d -RNumber -bi -i -VNumber -binsert -j[Key:]Number -x -bnoforceimp -kKey:Path -YNumber참고: -bsvr4 옵션이 ld 명령행에 있으면 -R 및 -z 옵션이 재정의됩니다.ld 명령이 지원하지 않는 플래그는 오류 메시지를 야기합니다. 지원되지 않는 모든 플래그를 진단한 후 추가 처리 없이 ld 명령이 중지됩니다.
플래그
ld 명령은 — 인수가 명령행의 나머지 피연산자가 아닌 다음 피연산자에만 적용되는 것을 제외하고 XPG 유틸리티 구문 가이드라인을 준수합니다. 예를 들어, 명령행에서 ld --
-s -v를 입력하면 -s 은 파일 이름으로 처리되고 -v 는 플래그로 처리됩니다. -v 를 파일 이름으로 처리하려면 ld -- -s -- -v 를 입력하십시오.
| 항목 | 설명 |
|---|---|
| -b옵션 | 특수 처리 옵션을 설정합니다. 이 플래그는 반복될 수 있습니다. 이러한 옵션에 대한 자세한 내용은 옵션(-bOptions)을 참조하세요. |
-d [y | n] |
-dy가 지정되는 경우 ld는 동적 링크를 사용합니다. 이 옵션은 -b so 옵션과 동일합니다. -dn이 지정되는 경우 ld는 정적 링크를 사용합니다. 이 옵션은 -b nso 옵션과 동일합니다. 디폴트 값은 -dy입니다. 이 옵션은 -bsvr4 옵션이 지정된 경우에만 유효합니다. |
| -D 번호 | 출력 파일의 초기화된 데이터 (데이터 섹션) 에 대한 시작 주소를 Number로 설정합니다. 지정된 숫자가 -1인 경우, 데이터 섹션은
텍스트 섹션 바로 뒤에 시작합니다. 기본적으로 데이터 섹션은 위치 0에서 시작합니다. -D 플래그와 -bpD 플래그를 모두 지정하는 경우 후자 플래그가 우선합니다. 주: 시스템 로더는 런타임 시 데이터 섹션을 재배치하므로 지정된 번호는 주소 맵에 나열되거나 dump 또는 nm 명령과 같은 유틸리티에 의해 인쇄되는 주소에 영향을 줍니다.
|
| -e 레이블 | 실행 가능 출력 파일의 시작점을 Label로 설정합니다. 디폴트 시작점은 __start(이중 밑줄 문자 start)입니다. |
| -f FileID | 처리할 입력 파일 목록을 포함하는 파일을 지정합니다. FileID 는 입력 파일 이름 목록을 포함해야 합니다. FileID 의 각 행은 ld 명령행에 별도로 나열된 것처럼 처리됩니다. 파일의 행에는 쉘 패턴 문자 * (별표), [ (왼쪽 대괄호), ] (오른쪽 대괄호) 및 ? (물음표) 가 포함될 수 있으며, 이는 glob 서브루틴을 사용하여 확장되고 여러 오브젝트 파일을 지정할 수 있습니다. |
| -G | -G 는 런타임 링커와 함께 사용할 수 있는 공유 오브젝트를 생성합니다. -G 플래그는 -b 플래그와 함께 erok, rtl, nortllib, nosymbolic, noautoexp, M:SRE 옵션을 지정하는 것과 같습니다. 후속 옵션이 이러한 옵션을 재정의할 수 있습니다. |
| -H 번호 | 각 섹션이 Number의 배수인 파일 오프셋에서 시작하도록 출력 파일의
텍스트, 데이터, 로더 섹션을 정렬합니다. 지정된 숫자가 1인 경우에는 정렬하지 않습니다. 지정된 숫자가 0이면 로더 섹션은 단어 경계에 맞춰지고 텍스트 및 데이터 섹션은 섹션에 있는 모든 CSECT의 맞추기를 충족시키기 위해 경계에 맞춰집니다. 디폴트 값은 0입니다. 지정된 Number 로 인해 CSECTS가 출력 파일 내에서 정렬되지 않으면 ld 명령은 경고를 발행하고 출력 실행 파일이 로드되거나 실행되지 않을 수 있습니다. |
| -K | 각 섹션이 페이지 경계에서 시작하도록 출력 파일의 헤더, 텍스트, 데이터, 로더 섹션을 정렬합니다. 이 플래그는 -H Number를 지정하는 것과 같습니다. 여기서 Number 는 ld 가 실행 중인 시스템의 페이지 크기입니다. |
| -l 이름 | libName.a 파일을 처리합니다. 동적 모드에서
rtl 옵션을 사용할 경우 libName.a 또는 libName.so
파일을 처리합니다. 모든 경우에 -L 플래그에 의해 지정되거나 표준 라이브러리 디렉토리 (/usr/lib 및 /lib) 에 있는 디렉토리를 검색하여 파일을 찾습니다. rtl 옵션을 사용하는 동적 모드에서 libName.so 또는 libName.a 를 포함하는 첫 번째 디렉토리가 검색을 충족합니다. 두 파일이 모두 동일한 디렉토리에 있는 경우 libName.so 파일이 사용됩니다. 이 플래그는 반복할 수 있습니다. 동적 모드에 대한 자세한 정보는 런타임 링크를 참조하십시오. 주: 아카이브를 읽을 때 기호에 대한 참조가 표시되지 않더라도 기호의 첫 번째 정의는 유지됩니다. ld 명령의 다른 버전에서는 아카이브를 읽을 때 기호에 대한 참조가 표시되지 않으면 아카이브에 정의된 기호가 무시됩니다.
|
| -L 디렉토리 | -l (소문자 L) 플래그로 지정된 라이브러리를 찾는 데 사용되는 검색 디렉토리 목록에 Directory 를 추가합니다. 표준 라이브러리 디렉토리를 포함한 디렉토리 목록은 -blibpath, -bnolibpath또는 -bsvr4 옵션을 사용하지 않는 한 시스템 로더에서 사용할 출력 오브젝트 파일 로더 섹션에도 기록됩니다. 이 플래그는 반복할 수 있습니다. |
| -m 또는 -M | 출력 파일을 작성하기 위해 처리되는 모든 파일 및 아카이브 멤버의 이름을 표준 출력에 나열합니다. 공유 오브젝트 및 반입 파일은 나열되지 않습니다. |
| -o 이름 | 출력 파일의 이름을 Name으로 지정합니다. 기본적으로 출력 파일의 이름은 a.out입니다. |
| -r | 다른 ld 명령 호출에서 입력 파일로서 사용할 실행 불가능 출력 파일을 생성합니다. 이 파일에는 해석되지 않은 기호도 포함될 수 있습니다. -r 플래그는 -b 플래그와 함께 erok, noglink, nox및 nogc 옵션을 지정하는 것과 같습니다. (후속 옵션이 이 옵션을 재정의할 수 있습니다.) |
| -R 경로 | -bsvr4 옵션이 ld 명령행에 있을 때만 유효합니다. 이는 실행시간 링커에 라이브러리 검색 디렉토리를 지정하는 데 사용되는 디렉토리의 콜론으로 구분된 목록을 정의합니다. Path가 존재하며 널(NULL)이 아닐 경우, 출력 파일의 로더 섹션에 기록됩니다. 그런 다음 런타임 시 실행 파일을 공유 라이브러리와 링크할 때 사용됩니다. 해당 옵션의 복수 인스턴스는 콜론으로 분리된 각각의 Path와 병합됩니다. |
| -s | 출력 파일을 작성할 때 기호 테이블, 회선 번호 정보,
재배치 정보를 스트립합니다. 스트립은 공간을 절약하지만
디버거의 유용성을 저해합니다. strip 명령을 사용하여 기존 실행 파일을 제거할 수도 있습니다. 주: 비공유 오브젝트는 스트립된 경우 링크할 수 없습니다. 공유 오브젝트를 스트립할
수 있지만 스트립된 공유 오브젝트는 정적으로 링크할 때 사용할 수 없습니다.
|
| -S 번호 | 출력 실행 가능 프로그램 파일이 실행될 때 사용자 스택에 허용되는 최대 크기 (바이트) 를 설정합니다. 이 값은 보조 헤더에 저장되며 시스템 로더가 소프트 ulimit를 설정하는 데 사용합니다. 디폴트 값은 0입니다. 대형 사용자 스택 및 32비트프로그램에 대한 자세한 정보는 일반 프로그래밍 개념 주제 아래의 대형 프로그램 지원 을 참조하십시오. |
| -T 번호 | 출력 파일 텍스트 섹션의 시작 주소를
Number로 설정합니다. 디폴트 값은 0입니다. -T 플래그와 -bpT 플래그를 모두 지정하는 경우 후자 플래그가 우선합니다. 주: 시스템 로더는 런타임 시 텍스트 섹션을 재배치하므로 지정된 번호는 주소 맵에 나열되거나 nm 또는 dump 명령과 같은 유틸리티에 의해 인쇄되는 주소에 영향을 줍니다.
주의: Number 가
0x1000xxxxxxx 이고 링크된 프로그램이 64비트프로그램인 경우, 시스템 로더는 0x10000000000주소의 세그먼트에서 시작하는 메모리로 실행 가능 텍스트를 로드합니다. |
| -u 이름 | 이 옵션은 외부 기호 이름의 가비지 콜렉션을 방지합니다. 지정된 기호가 존재하지 않으면 경고가 보고됩니다. 이 플래그는 반복할 수 있습니다. |
| -v | 바인더 명령 실행에 대한 추가 정보를 loadmap 파일에 기록합니다. |
| -V | ld 명령의 버전 문자열을 표준 오류 (stderr) 에 기록합니다. |
| -z | -b svr4 옵션이 없는 경우 -z 플래그는 -K 플래그와 동일하게 기능합니다. |
| -z defs | 이 옵션은 링크 끝에 정의되지 않은 기호가 남아 있는 경우 치명적인 오류를 강제로 발생시킵니다. 이 옵션은 실행 파일이 빌드될 때 기본값입니다. 또한 오브젝트가 자체 포함 즉, 모든 기호 참조가 내부적으로 해석되도록 보장하는 공유 라이브러리를 빌드할 때 유용합니다. 이 옵션은 -b svr4 옵션이 지정된 경우에만 유효합니다. 이는 -b ernotok 옵션과 동일합니다. |
| -z nodefs | 이 플래그는 정의되지 않은 기호를 허용합니다 이 옵션은 공유 라이브러리가 빌드될 때 기본값입니다. 실행 파일과 함께 사용되는 경우, 정의되지 않은 기호에 대한 참조의 작동은 지정되지 않습니다. 이 옵션은 -b svr4 옵션이 지정된 경우에만 유효합니다. 이는 -b erok 옵션과 동일합니다. |
| -z multidefs | 이 옵션은 복수 기호 정의를 허용합니다. 기본적으로 재배치 가능한 객체(.o 파일) 사이에 여러 심볼 정의가 발생하면 치명적인 오류 상태가 발생합니다. 이 옵션은 오류 조건을 억제하며 첫 번째 기호 정의를 취하도록 합니다. 이 옵션은 -b svr4 옵션이 지정된 경우에만 유효합니다. |
| -z text | 동적 모드에서 .text 섹션에 대한 재배치가 유지되는 경우 치명적 오류를 강제 실행합니다. 이 옵션은 -b svr4 옵션이 지정된 경우에만 유효합니다. |
| -z nowarntext | 동적 모드에서 .text 섹션을 포함한 모든 맵핑 가능 섹션에 대해 재배치를 허용합니다. 이 옵션은 공유 라이브러리를 빌드할 때 기본값입니다. 이 옵션은 -b svr4 옵션이 지정된 경우에만 유효합니다. |
| -z warntext | 동적 모드에서 .text 섹션에 대한 재배치가 유지되는 경우 경고합니다. 이 옵션은 실행 파일을 빌드할 때 기본값입니다. 이 옵션은 -b svr4 옵션이 지정된 경우에만 유효합니다. |
| -Z 문자열 | -l (소문자 L) 플래그로 지정된 라이브러리를 검색할 때 표준 라이브러리 디렉토리의 이름에 String 을 접두부로 붙입니다. 예를 들어, -Z test 및 -lxyz 플래그를 사용하여 ld 명령은 /test/usr/lib/libxyz.a 및 /test/lib/libxyz.a 파일을 찾습니다. -ZString 플래그를 사용할 경우에는, 표준 라이브러리 디렉토리를 검색하지 않습니다. 이 플래그는 출력 파일의 로더 섹션에 저장되는 라이브러리 경로 정보에는 영향을 주지 않습니다. 이 플래그는 새로운 라이브러리 버전을 개발할 때 유용합니다. 이 플래그는 반복할 수 있습니다. |
바인더
ld 명령은 명령행 인수를 검증하며 생성된 바인더 부속 명령 리스트를 전달하여 바인더(기본적으로 /usr/ccs/bin/bind 파일)를 호출합니다. 바인더 프로그램은 파일을 링크합니다. 바인더가 ld 명령에 의해 호출되더라도 바인더를 직접 시작할 수 있습니다. 이 경우 바인더는 표준 입력에서 명령을 읽습니다.
바인더 호출에는 두 가지 옵션이 영향을 미칩니다. binder 옵션은 호출할 바인더를 지정하고 nobind 옵션은 ld 명령이 바인더를 호출하지 못하게 합니다. 다른 바인더 옵션은 생성되는 바인더 부속 명령에 영향을 줍니다.
ld 명령이 옵션이나 명령행 인수에서 어떤 오류도 발견하지 않으면 바인더를 호출합니다. 바인더는 다음 양식의 명령행으로 호출됩니다.
bind [quiet_opt] [loadmap_opt]
quiet_opt의 디폴트 값은 quiet이고 loadmap_opt의 디폴트 값은 널(null) 문자열이므로 디폴트 명령행은 다음과 같습니다.
/usr/ccs/bin/bind quiet
옵션(-bOptions)
- 다음 바인더 옵션 목록에서 또는 단어로 구분되는 두 개의 옵션 이름은 동의어입니다.
- FileID는 경로 이름을 나타냅니다. 상대 경로 이름이나 전체 경로 이름을 사용할 수 있습니다.
- 인수가 뒤따르는 반복 불가능한 옵션의 경우 널 인수를 사용하여 옵션을 무효화할 수 있습니다. 즉, 옵션과 콜론만 지정하십시오.
- 충돌 옵션을 지정하는 경우에는 마지막 옵션이 우선합니다.
| 항목 | 설명 |
|---|---|
| 32 | 32비트 링크 모드를 지정합니다. 이 모드에서는 모든 입력 오브젝트 파일이 XCOFF32 파일이어야 하며, 그렇지 않으면 오류가 보고됩니다. XCOFF64 아카이브 멤버는 무시됩니다. 특정 기호의 모드를 지정하는 반입 또는 반출 파일의 경우 64비트기호는 무시됩니다. -b32 및 -b64 옵션이 모두 지정되는 경우에는 마지막으로 지정된 옵션을 사용합니다. 어느 옵션도 지정되지 않은 경우, 모드는 환경 변수 OBJECT_MODE의 값에서 판별됩니다. |
| 64 | 64비트 링크 모드를 지정합니다. 이 모드에서 모든 입력 오브젝트 파일은 XCOFF64 파일이어야 하며, 그렇지 않으면 오류가 보고됩니다. XCOFF32 아카이브 멤버는 무시됩니다. 특정 기호의 모드를 지정하는 반입 또는 반출 파일의 경우 32비트기호가 무시됩니다. -b32 및 -b64 옵션이 모두 지정되는 경우에는 마지막으로 지정된 옵션을 사용합니다. 옵션이 지정되지 않은 경우, 모드는 환경 변수 OBJECT_MODE의 값에서 판별됩니다. |
| asis | 대소문자가 섞인 모든 외부 기호를 처리합니다. 이 옵션이 디폴트입니다. 모든 외부 기호를 대문자로 처리하려면 다음에 오는 caps 옵션을 참조하십시오. |
| aslr 또는 aslr:[tdsmp]* 또는 aslr:- | 프로그램의 주소 공간 배치 랜덤화를 지정합니다. aslr 옵션은 이 옵션만 사용할 때 모든 랜덤화 속성을 사용하도록 설정하고 aslr 옵션 앞에 쉼표를 사용하면 개별 속성을 사용으로 설정할 수 있습니다. 다음 속성은 텍스트, 데이터, 스택, mmap및 개인용 라이브러리를 나타냅니다. t, d, s, m및 p. 나열되지 않은 속성의 경우, 무작위화 설정은 사용 불가능한 상태로 유지됩니다.
주: 32비트프로그램에는 m 및 p 속성을 지정할 수 없습니다.
일부 프로그램은 재배치 가능 주소가 텍스트 섹션에 맵핑되도록 컴파일되고 링크됩니다. 이 옵션을 사용하려면 프로그램이 실행될 때 주소를 재배치해야 합니다. 랜덤화가 텍스트 또는 데이터에 대해 사용으로 설정되면 이러한 프로그램은 실패합니다. 따라서 텍스트 섹션 재배치가 존재하는 경우 aslr 옵션을 사용하여 t 및 d 속성을 명시적으로 지정하지 않으면 텍스트 및 데이터 무작위화가 사용되지 않습니다. |
| autoexp | 특정 기호를 반출 파일에 나열할 필요없이 출력 모듈에서
자동으로 반출합니다. (이 옵션은 출력 모듈에서 모든 기호를
반출하지는 않습니다. 모든 기호를 내보내려면 bexpall 옵션을 사용하십시오.) 이 옵션이 기본값입니다. 주 프로그램을 링크할
때 이 옵션을 사용하십시오. 링커는 S 로 시작하는 모듈 유형 ( M 또는 modtype 옵션 사용) 을 지정하지 않고 noentry 옵션을 사용하지 않는 경우 기본 프로그램을 링크한다고 가정합니다.autoexp 옵션을 사용할 때 명령행에 나열된 공유 오브젝트가 특수 파일 . (점) 에서 기호를 가져오고 링크된 모듈에 기호의 로컬 정의가 포함된 경우 기호가 자동으로 내보내집니다. 기타 기호는 또한 rtl 옵션으로 링크할 때 자동으로 반출됩니다. 링크된 모듈에 정의된 기호에 명령행에 나열된 공유 오브젝트에서 내보낸 하나 이상의 정의가 있고 정의 중 하나가 BSS 기호인 경우, 기호가 자동으로 내보내집니다. 링크된 모듈의 정의가 BSS 기호인 경우 기호는 nosymbolic 속성과 함께 내보내집니다. 그렇지 않으면 symbolic 속성으로 기호가 반출됩니다. 기호가 다른 반출 속성으로 반출 파일에 나열되는 경우, 명시적인 속성이 사용됩니다. autoexp 옵션이 기호를 자동으로 반출하지만 기호가 list 속성과 함께 반출 파일에 나열되면 기호가 반출되지 않습니다. |
| autoimp 또는 so | 입력 파일로 지정된 공유 오브젝트에서 기호를 가져옵니다. 공유 오브젝트는 참조되지만 출력 오브젝트 파일의 일부로서 포함되지 않습니다. 이 옵션이 디폴트입니다. |
| autoload: 경로/파일 (멤버) | 아카이브 멤버를 자동으로 로드합니다. |
| bigtls | 출력 오브젝트 또는 프로그램에서 thread-local 스토리지의 크기가 64KB보다 크고 local-exec 또는 local-dynamic thread-local 변수에 대한 직접 참조를 생성하는 컴파일러가 사용된 경우 특수 코드를 생성합니다. 특수 코드는 16비트 오프셋으로 주소 지정될 수 없는 thread-local 변수에 대한 모든 직접 참조에 필요합니다. 추가 코드가 포함된 프로그램의 성능이 저하될 수 있으므로 옵션을 사용하는 것보다 직접 참조를 사용하는 스레드 로컬 변수의 수를 줄이는 것이 좋습니다. 디폴트 옵션은 nobigtls 옵션입니다. |
| bigtoc | 목차 (TOC) 의 크기가 64KB보다 큰 경우 추가 코드를 생성합니다. 특수 코드는 16비트 오프셋으로 주소 지정될 수 없는 TOC 기호에 대한 모든 참조에 필요합니다. 생성된 코드를 포함하는 프로그램의 성능이 저하될 수 있으므로 이 옵션을 사용하기 전에 프로그램에 필요한 TOC 항목의 수를 줄이십시오. 디폴트는 nobigtoc 옵션입니다. |
| bindcmds:파일ID | ld 명령으로 생성된 바인더 명령의 사본을 FileID에 기록합니다. 바인더 프로그램이 독립형 프로그램으로 호출될 때 결과 파일을 표준 입력으로 바인더 프로그램으로 경로 재지정할 수 있습니다. 기본적으로 파일이 생성되지 않습니다. |
| binder:파일ID | FileID를 ld 명령으로 호출되는 바인더로서 사용합니다. 기본 바인더는 /usr/ccs/bin/bind 파일입니다. |
| bindopts:파일ID | 바인더 프로그램 인수의 사본을 FileID에 씁니다. 결과 파일을 사용하여 바인더 프로그램을 독립형 프로그램으로 시작할 수 있습니다. 기본적으로 파일이 생성되지 않습니다. |
| C:파일ID 또는 ' calls':파일ID | 출력 오브젝트 파일의 주소 맵을 FileID에 기록합니다. 기호는 섹션별로 분류된 후 주소별로 분류됩니다. 맵에 나열되는 각 기호마다 해당 기호에서 다른 기호로의 참조가 나열됩니다. 기본적으로 파일이 생성되지 않습니다. calls 옵션에 대한 자세한 정보는 주소 맵을 참조하십시오. |
| caps | 모든 외부 기호를 대문자로 처리합니다. 디폴트는 asis 옵션입니다. |
| cdtors[: [incl] [: [nnn] [:order]]] | 링커는 생성자 또는 소멸자 함수에 대한
정보를 수집하고 해당 정보를 출력 파일에 저장합니다. incl 하위 옵션은 저장된 정보를 작성할 때 검색할
아카이브 멤버를 링커에 알려줍니다. 다음은 가능한 값입니다.
nnn 하위 옵션은 출력 모듈의 우선순위를 지정합니다. 프로그램이 동시에 여러 모듈을 로드하는 경우 nnn 하위 옵션을 사용하여 모듈이 초기화되는 순서를 제어합니다. (출력 파일이 프로그램이고 공유 오브젝트가 아니면 우선순위가 무시됩니다.) 우선순위의 가능한 범위는 -231에서 231-1까지입니다. 디폴트 운선순위는 0입니다. -231에서 -231+1023까지의 범위에 속하는 값은 C++ 실행시간 초기화용으로 예약됩니다. order
하위 옵션은 우선순위가 같은 모든 함수에 대해 개별 생성자
또는 소멸자 함수가 호출되는 순서를 지정합니다. 다음은 가능한 값입니다.
이 옵션은 여러 번 지정할 수 있지만 마지막으로 지정하는 하위 옵션을 사용합니다. 지정하지 않은 하위 옵션은 현재 또는 디폴트 값에 영향을 주지 않습니다. 예를 들어, -bcdtors:csect:20:s -bcdtors:::r 는 -bcdtors:csect::20:r와 동일합니다. 디폴트는 -bnocdtors입니다. -bcdtors 가 지정되면 -bcdtors:all:0:s와 동일합니다. 참고:
|
| comprld 또는 crld | 같은 주소의 여러 개의 재배치 항목(RLD)을 가능한 경우 단일 RLD로 결합합니다. 이 옵션이 디폴트입니다. |
| cror15 | cror 15,15,15 (0x4def7b82) 명령어를 호출 명령어 뒤에 오는 특수 no-op 명령어로 사용합니다. 기본값은 ori 0, 0,
0 (0x60000000) 입니다. nop 옵션을 참조하십시오.AIX® 3.1 다시 연결하려는 시스템의 현재 레벨에 있는 객체 파일을 연결할 때 이 옵션을 사용합니다. |
| cror31 | cror 31,31,31 (0x4ffffb82) 명령어를 호출 명령어 뒤에 오는 특수 no-op 명령어로 사용합니다. 기본값은 ori 0, 0,
0 (0x60000000) 입니다. nop 옵션을 참조하십시오.AIX 3.2에서 다시 링크하려는 시스템의 현재 레벨에서 오브젝트 파일을 링크할 때 이 옵션을 사용하십시오. |
| D: Number [/dsa] 또는 maxdata:Number[/dsa] | 실행 가능 프로그램이 실행될 때 사용자 데이터 영역(또는
사용자 힙)에 허용되는 최대 크기(바이트)를 설정합니다. 이 값은 보조 헤더에 저장되며 필요한 경우 소프트 데이터 한계를 늘리기 위해 시스템 로더에서 사용됩니다. 디폴트 값은 0입니다. 이 옵션을 사용하는 경우, 사용자 데이터 영역에 대해 지정된
수의 바이트가 예약됩니다. 프로그램이 shmat 또는 mmap
함수를 사용하여 오브젝트를 사용자 데이터 영역용으로 예약된 가상 주소로
명시적으로 맵핑하지 않을 수 있습니다. 32비트프로그램의 경우, 시스템에서 허용하는 최대값은 대형 프로그램 지원에서 실행 중인 프로그램의 경우 64비트프로그램의 경우 maxdata 옵션은 프로그램 데이터 힙에 대해 보장된 최대 크기를 제공합니다. 모든 값을 지정할 수 있지만 데이터 영역은 지정된 maxdata 값에 관계없이 |
| datapsize:psize | 데이터에 대한 psize 페이지 크기를 바이트 단위로 요청합니다. 값은 10진수, 16진수
또는 8진수로 지정할 수 있습니다. 숫자 스펙은 C 프로그래밍 언어에서와 동일합니다. 또한 페이지 크기는 숫자와 그 뒤에 오는 1문자접미부로 지정할 수 있습니다.
-b datapsize:16k 또는 -b datapsize:0x4000 는 데이터에 대해 0x4000 을 요청하고 XCOFF 헤더에서 F_VARPG 비트를 설정합니다. |
| dbg:Option 또는 debugopt:Option | 특수 디버깅 또는 제어 옵션을 설정합니다. 기본적으로 디버그
옵션은 설정되지 않습니다. dbg:loadabs 또는 debugopt:loadabs 옵션은 출력 프로그램이 -T 및 -D 플래그가 지정하는 주소와 같은 주소에서 로드되도록 지정하는 데 사용됩니다. 이 경우 branch-absolute 명령어는 목표가 재배치 가능 기호인 경우에도 (상대) 분기 명령어로 변경되지 않습니다. 마찬가지로, 분기 명령어는 분기 절대 명령어로 변경되지 않습니다. |
| delcsect | CSECT의 모든 기호가 이전에 읽은 오브젝트 파일에 의해
정의된 경우, CSECT의 모든 기호를 삭제합니다. 이 옵션은 같은 함수의
두 개 이상의 인스턴스가 같은 프로그램에 존재하지 못하게 합니다. 예를 들어, ' a.o 파일이 ' a() ' 함수를 정의하고 ' b.o 파일이 ' a() ' 및 ' b()' 함수를 정의하는 경우 ' a.o ' 및 ' b.o '을 ' -bdelcsect 옵션으로 연결하면 ' b.o'에서 기호 ' a() ' 및 ' b() '이 삭제됩니다. 따라서 a()의 두 인스턴스가 존재하지 않습니다. 디폴트는 nodelcsect 옵션입니다. |
| dynamic 또는 shared | 링커가 후속 공유 오브젝트를 동적 모드에서 처리하도록 합니다. 이 옵션이 디폴트입니다. 동적 모드에서는 공유 오브젝트가 출력 파일에 정적으로 포함되지 않습니다. 대신 공유 오브젝트는 출력 파일의 로더 섹션에 나열됩니다. rtl 옵션을 지정하고 동적 모드가 적용되는 경우 .so 및 .a 로 끝나는 파일은 -l (소문자 L) 플래그로 지정된 라이브러리에 대한 검색을 충족합니다. 둘 다 적용되는 경우, 동일한 디렉토리에 있으면 .a 대신 .so 에 환경 설정이 제공됩니다. rtl 옵션을 지정하고 정적 모드가 적용되면 .a 로 끝나는 파일이 처리됩니다. |
| E:파일ID 또는 ' export':파일ID | FileID파일에 나열된 외부 기호를 반출합니다. 반출된 기호는 출력 파일의 로더 섹션에 나열됩니다. 디폴트 반출 파일은 없습니다. ' svr4 옵션을 사용하는 경우 ' E:FileID 옵션은 ' expall ' 또는 ' expfull ' 옵션을 취소합니다. |
| ernotok 또는 f | 해석되지 않는 외부 참조가 있는 경우 오류를 보고합니다. 이 옵션이 디폴트입니다. |
| erok | 해석되지 않는 외부 참조가 있는 경우에도 오류 없이 출력 오브젝트 파일을 생성합니다. 디폴트는 ernotok 옵션입니다. |
| errmsg | 메시지의 오류 레벨이 halt 옵션의 값보다 크거나 같고 quiet 옵션을 사용하거나 표준 출력의 방향이 재지정되는 경우 표준 출력에 오류 메시지를 기록합니다. 이 옵션이 디폴트입니다. |
| ex1:FileID, ex2:FileID, ex3:FileID, ex4:FileID, ex5:FileID | 특정 바인더 부속 명령 시퀀스에서
사용자 엑시트를 제공합니다. FileID 에 의해 지정되는 각 파일은 다음과 같이 실행되는 바인더 부속 명령 리스트를 포함해야 합니다.
|
| expall | 이 옵션은 반입된 기호, 아카이브 멤버에 정의된 참조되지 않은 기호 및 밑줄 (_) 로 시작하는 기호를 제외한 모든 글로벌 기호를 반출합니다. 반출 파일에 나열하거나 expfull 옵션을 사용하여 더 많은 기호를 반출할 수 있습니다. 이 옵션은 autoexp 옵션으로 반출되는 기호에는 영향을 주지 않습니다. 이 옵션을 사용하는 경우 내보내기 파일을 사용하면 이 문제를 방지할 수 있습니다. 그러나 반출 파일을 사용하면 반출되는 기호를 명시적으로 제어할 수 있으며, 다른 공유 오브젝트에서 반출되는 이름과 충돌하지 않고 공유 오브젝트 내에서 다른 글로벌 기호를 사용할 수 있습니다. 디폴트는 noexpall입니다. |
| expfull | 이 옵션은 가져온 심볼과 아카이브 멤버에 정의된 심볼을 제외한 모든 글로벌 심볼을 내보냅니다. -bexpall 옵션과 달리 -bexpfull 옵션은 밑줄 (_) 로 시작하는 기호를 내보내고 기호의 모듈 시작점도 내보냅니다. -bexpfull 옵션의 실제 동작은 특정 유스 케이스 및 런타임 링커의 구성에 따라 다를 수 있습니다. -bexpfull 옵션은 autoexp 옵션으로 내보내는 기호에 영향을 주지 않습니다. svr4 옵션이 -b 플래그와 함께 사용되지 않는 경우 기본값은 noexpfull 입니다. |
| export:FileID | E:FileID 옵션과 동일하게 기능합니다. |
| f | ernotok 옵션과 동일하게 기능합니다. |
| forceimprw | 반입된 기호에 대한 참조가 포함된 읽기 전용 CSECT가 읽기 또는 쓰기가 되도록 강제 실행합니다. 기본값은 noforceimprw입니다. |
| forkpolicy:정책 | 64비트 프로그램을 링크할 때 XCOFF 보조 헤더에서 _AOUT_FORK_POLICY 및 _AOUT_FORK_COR 플래그를 설정합니다. policy 가 cor인 경우, _AOUT_FORK_COR 플래그도 설정되어 프로그램이 실행될 때 copy-on-reference forktree 정책의 사용을 요청합니다. policy 가 cow인 경우, _AOUT_FORK_COR 플래그가 재설정되어 프로그램이 실행될 때 copy-on-write forktree 정책의 사용을 요청합니다. 32비트 프로그램을 링크할 때는 이 플래그를 무시합니다. 기본값은 noforkpolicy입니다. |
| gc | 가비지 콜렉션을 수행합니다. 일부 또는 모든 오브젝트 파일에 대해 가비지 콜렉션을 방지하려면 nogc, gcbypass 또는 keepfile 옵션을 사용하십시오. 이 옵션이 디폴트입니다. |
| gcbypass:번호 | gc 옵션이 지정된 경우 가비지가 수집될 때 생략할 파일 수를 지정합니다. nogc 옵션을 사용하는 경우에는 이 옵션이 무시됩니다. Number가 0인 경우 이 옵션은 gc 옵션과 동일하며 모든 파일에 대해 가비지 콜렉션이 수행됩니다. 기본값은 0입니다. |
| glink:FileID | FileID 지정된 글로벌 연결 프로토타입 코드를 사용합니다. 글로벌 연결 인터페이스 코드가 각각의 반입되거나 정의되지 않은 함수에 대해 생성됩니다. 32비트 모드의 경우 디폴트는 /usr/lib/glink.o 파일입니다. 64비트 모드의 경우 디폴트는 /usr/lib/glink64.o 파일입니다. |
| h:Number 또는 halt:Number | 바인더 명령 처리를 계속하기 위한 최대 오류 레벨을
지정합니다. 기본값은 4입니다. 바인더 부속 명령의 리턴값이 Number보다 큰 경우, 추가 바인더 부속 명령이 처리되지 않습니다. 정지 레벨 값이 8이상이면 출력 파일이 실행 파일이 아닐 수 있습니다 (전혀 생성되지 않은 경우). 리턴
값은 다음과 같습니다.
|
| I:FileID 또는 import:FileID | (대문자 i) FileID에 나열된 기호를 가져옵니다. 디폴트 반입 파일은 없습니다. |
| initfini:[ 초기] [:종료] [:우선순위] | 모듈에 대한 모듈 초기화 및 종료 함수를 지정합니다.
여기서 Initial은 초기화 루틴이고 Termination은
종료 루틴이며 Priority는 -2,147,483,648에서 2,147,483,647까지의
값을 갖는 부호 있는 정수입니다. 초기 및 종료중 하나 이상을 지정하고 종료 및 우선순위를 모두 생략하는 경우 초기 뒤에도 콜론을 생략해야 합니다. 우선순위를 지정하지 않으면 0 이 기본값입니다. 이 옵션은 반복될 수 있습니다. 이 옵션은 가장 작은(가장 음수의) 우선순위를 갖는 루틴으로 시작하여 우선순위별로 루틴을 분류합니다. 이 경우 초기화 루틴은 순서대로 호출하고 종료 루틴은 역순으로 호출합니다. 이 옵션은 우선순위가 같은 루틴을 지정되지 않은 순서로 호출하지만, 여러 개의 initfini 옵션이 같은 우선순위와 초기화 및 종료 루틴을 모두 지정하는 경우에는 루틴의 상대적인 순서를 보존합니다. 예를 들어, 옵션 initfini:i1:f1 및 initfini:i2:f2를 지정하면, 함수 i1과 i2가 지정되지 않은 순서로 호출되지만, 모듈이 로드될 때 i1이 i2 이전에 호출되면, 해당 모듈이 로드 해제될 때 f2가 f1 전에 호출될 것입니다. 참고:
|
| ipath | -l 플래그로 지정되지 않고 명령행에 나열되는 공유 오브젝트의 경우에는 출력 파일의 로더 섹션에 공유 오브젝트를 나열할 때 경로 구성요소를 사용합니다. 이 옵션이 디폴트입니다. |
| keepfile:FileID | 이 옵션은 FileID의 가비지 콜렉션을 방지합니다. 기본적으로 바인더는 모든 파일에서 참조되지 않는 CSECT를 삭제합니다. 이 옵션은 반복할 수 있습니다. |
| lazy | 이 옵션은 모듈의 종속 모듈의 지연 로드를 사용 가능하게 합니다. 이 옵션은 다른 플래그 및 옵션 뒤에 -lrtl 옵션을 추가합니다. -brtl 옵션이 지정되는 경우에는 -blazy 옵션이 무시되고
지연 로딩을 사용할 수 없습니다. 모듈이 링크될 때, 해당 종속 모듈의 리스트가 해당 모듈의 로더 섹션에 저장됩니다. 모듈이 로드된 후 시스템 로더가 자동으로 종속 모듈을 로드합니다. 지연 로드를 사용하는 경우, 모듈에서 처음 함수가 호출될 때까지 일부 종속사항에 대해 로드가 연기됩니다. 모듈에 대한 모든 참조가 함수 호출이면 모듈이 지연 로드됩니다. 모듈의 변수가 참조되는 경우, 모듈은 일반적인 방식으로 로드됩니다. 주: 지연 로딩을 사용하는 경우 함수 포인터를 비교할 때 주의하십시오. 일반적으로 함수는 두 함수 포인터를 비교하여
같은 함수를 참조하는지 여부를 판별하기 위한 고유한 주소를 갖습니다. 모듈을 링크하기 위해 지연 로드를 사용하는 경우 지연 로드된 모듈의 함수 주소는 다른 모듈에서 계산되는 주소와 동일하지 않습니다. 함수 포인터의 비교에 의존하는 프로그램은 지연 로딩을 사용하지 않아야 합니다.
지연 로드에 대한 자세한 정보는 공유 라이브러리 및 지연 로드를 참조하십시오. |
| l:FileID 또는 loadmap:FileID | (소문자 L) 각 바인더 부속 명령 및 해당 결과를 FileID에 씁니다. 기본적으로 파일이 생성되지 않습니다. |
| libpath:경로 | 출력 파일의 로더 섹션 기록 시 Path를 라이브러리
경로로 사용합니다. Path는 유효성 검증을 위해 검사되지도 않고 -l
플래그로 지정되는 라이브러리 검색 시 사용되지도 않습니다. Path 는 -L 플래그가 사용될 때 생성되는 라이브러리 경로를 대체합니다. -L 플래그를 지정하지 않거나 nolibpath 옵션을 지정하는 경우, 출력 파일의 로더 섹션에 디폴트 라이브러리 경로 정보가 기록됩니다. 기본 라이브러리 경로 정보는 LIBPATH 환경 변수의 값 (정의된 경우) 이며, 그렇지 않으면 /usr/lib:/lib입니다. |
| loadmap:FileID | l:FileID 옵션과 동일하게 기능합니다. |
| lpdata | 실행 파일의 XCOFF 헤더에서 F_LPDATA 비트를 설정합니다. 이 비트가 설정되면
프로세스가 해당 데이터에 대해 대형 페이지를 요청합니다. |
| 항목 | 설명 |
|---|---|
| M:ModuleType 또는 modtype:ModuleType | 오브젝트 파일에서 2자 모듈 유형 필드와 공유 오브젝트
플래그를 설정합니다. 모듈 유형은 바인더에 의해 검사되지 않지만 다음 값 중 하나로 설정되어야 합니다.
|
| map:FileID 또는 R:FileID | 출력 오브젝트 파일의 주소 맵을 FileID에 씁니다. 기호는 섹션별로 분류된 후 주소별로 분류됩니다. 기본적으로 파일이 생성되지 않습니다. map 옵션에 대한 자세한 정보는 주소 맵을 참조하십시오. |
| maxdata:번호[/dsa] | D:Number[/dsa] 옵션과 동일하게 기능합니다. |
| maxstack:Number 또는 S:Number | -S 플래그와 동일하게 기능합니다. |
| modtype:ModuleType | M:ModuleType 옵션과 동일하게 기능합니다. |
| nl 또는 noloadmap | 이 옵션은 바인더 부속 명령 및 해당 결과를 로드 맵 파일에 기록하지 않습니다. 이 옵션이 디폴트입니다. |
| noaslr | 명령행에서 이전 aslr 옵션의 효과를 취소합니다. |
| noautoexp | 모든 기호의 자동 반출을 금지합니다. 디폴트는 autoexp 옵션입니다. |
| noautoimp 또는 nso | 스트립되지 않은 모든 공유 오브젝트를 일반 오브젝트 파일로서 링크합니다. 이 옵션을 사용할 때는 공유 오브젝트의 로더 섹션이 사용되지
않습니다. 디폴트는 autoimp 또는 so 옵션입니다. 참고: 이러한 플래그 중 하나를 사용하여 공유 오브젝트 파일을 애플리케이션에 정적으로 링크할 수 있습니다. 정적으로 링크된 애플리케이션은 수정사항 또는 릴리스 레벨에서 다른 수정사항 또는 릴리스 레벨로 2진이식 가능하지 않습니다.
|
| nobigtls | 이 옵션은 컴파일러가 스레드 로컬 변수에 대한 직접 참조를 생성하고 스레드 로컬 스토리지의 크기가 64KB보다 크기 때문에 변수 중 하나에 대한 재배치가 오버플로우되는 경우 심각한 오류 메시지를 생성합니다. 출력 파일이 생성되면 올바르게 실행되지 않습니다. 디폴트 옵션은 nobigtls 옵션입니다. |
| nobigtoc | 이 옵션은 TOC의 크기가 64KB보다 큰 경우 심각한 오류 메시지를 생성합니다. 출력 파일이 생성되면 올바르게 실행되지 않습니다. 이 옵션이 디폴트입니다. |
| nobind | 바인더 호출을 생략합니다. 대신 ld 명령은 생성된 바인더 부속 명령 리스트를 표준 출력에 기록합니다. 기본적으로 ld 명령은 바인더를 호출합니다. |
| nocdtors | 이 옵션은 정적 생성자 또는 소멸자 함수를 수집하지 않습니다. 이 옵션이 디폴트입니다. |
| nocomprld 또는 nocrld | 이 옵션은 동일한 주소의 여러 재배치 항목 (RLD) 을 단일 RLD로 결합하지 않습니다. 디폴트는 comprld 또는 crld 옵션입니다. |
| nodelcsect | 이 옵션을 사용하면 CSECT의 일부 기호가 이전에 읽은 오브젝트 파일에 정의된 경우에도 CSECT의 모든 기호를 기호 분석 중에 고려할 수 있습니다. 자세한 정보는 delcsect 옵션을 참조하십시오. nodelcsect 옵션은 디폴트입니다. |
| noexpall | 이 옵션은 기호를 내보내기 파일에 나열하거나 autoexp 옵션을 사용하여 내보내기하지 않는 한 기호를 내보내지 않습니다. 이 옵션이 디폴트입니다. |
| noexpfull | 이 옵션은 기호를 내보내기 파일에 나열하거나 autoexp 옵션을 사용하여 내보내기하지 않는 한 기호를 내보내지 않습니다. svr4 옵션을 사용하지 않는 경우 이 옵션이 기본값입니다. |
| noentry | 이 옵션은 출력 파일에 시작점이 없음을 표시합니다. 필요한 기호를 유지하려면 -u 플래그 또는 반출 파일로 지정하십시오. -r 플래그나 nogc 또는 gcbtpass 옵션을 사용하여 모든 외부 기호를 일부 또는 모든 오브젝트 파일에 보관할 수도 있습니다. noentry 및 nox 옵션을 모두 사용하지 않고 시작점을 찾을 수 없으면 경고가 발행됩니다. svr4 옵션을 사용하면 이 경고가 억제됩니다. |
| noerrmsg | 이 옵션은 표준 오류에 오류 메시지를 쓰지 않습니다. noquiet 옵션을 지정하고 표준 출력을 tee 또는 pg와 같은 명령에 연결하는 경우 이 옵션을 사용합니다. |
| noforceimprw | 이 옵션을 사용하면 읽기 전용 CSECT가 가져온 기호를 참조할 수 있습니다. 이 옵션이 디폴트입니다. |
| noforkpolicy | 64비트 프로그램을 링크할 때 XCOFF 보조 헤더에서 _AOUT_FORK_POLICY 및 _AOUT_FORK_COR 플래그를 지웁니다. VMM_CNTRL 환경 변수로 forktree 정책이 지정되지 않으면 디폴트 forktree 정책을 사용합니다. 32비트 프로그램을 링크할 때는 이 플래그를 무시합니다. 이 옵션이 디폴트입니다. |
| nogc | 이 옵션은 가비지 콜렉션을 방지합니다. 글로벌 기호가 포함된 모든 오브젝트 파일의 CSECT는 참조 여부에 관계없이 보존됩니다. 디폴트는 gc 옵션입니다. |
| noglink | ld 명령이 글로벌 연결 코드를 삽입하는 것을 방지합니다. 기본적으로 바인더는 글로벌 연결 코드를 삽입합니다. |
| noipath | -l 플래그로 지정된 것이 아닌 명령행에
나열된 공유 오브젝트의 경우, 출력 파일의 로더 섹션에 공유
오브젝트를 나열할 때 널(null) 경로 구성요소를 사용합니다. 널 (null) 경로 구성요소는 항상 -l 플래그로 지정된 공유 오브젝트에 사용됩니다. 이 옵션은 반입 파일에서 #!로
시작하는 행을 사용하여 경로 구성요소의 스펙에 영향을 주지
않습니다. 디폴트는 ipath 옵션입니다. |
| nolibpath | -L 플래그에 의해 생성되거나 libpath 옵션에 의해 지정된 이전 라이브러리 경로를 대체합니다. 대신 디폴트 라이브러리 경로 정보가 출력 파일의 로더 섹션에 기록됩니다. 디폴트 라이브러리 경로 정보는 LIBPATH 환경 변수의 값(정의된 경우) 및 /usr/lib:/lib(정의되지 않은 경우)입니다. |
| noloadmap | nl 옵션과 동일하게 기능합니다. |
| nolpdata | 실행 파일의 XCOFF 헤더에서 F_LPDATA 비트를 지웁니다. 이 비트가 설정되지
않으면 프로세스가 해당 데이터에 소형(일반) 페이지를 사용합니다. |
| nom | 이 옵션은 출력 파일을 작성하는 데 사용되는 오브젝트 파일을 나열하지 않습니다. 이 옵션은 -m 플래그를 재정의합니다. 이 옵션이 디폴트입니다. |
| noobjreorder | 이 옵션은 깊이 우선 CSECT 재정렬 논리를 사용하지 않습니다. 출력
파일의 CSECT는 다음과 같은 경우를 제외하고
명령행에서 오브젝트 파일과 라이브러리
파일이 지정된 동일한 순서대로 배열됩니다.
noobjreorder 및 noreorder 옵션이 모두 지정되는 경우에는 noreorder 옵션이 우선합니다. 디폴트는 reorder 옵션입니다. |
| noorder_file | 이 옵션은 지정된 순서로 기호를 맵핑하지 않습니다. 이 플래그는 이전 -border_file 플래그의 영향을 무효화합니다. 이 옵션이 디폴트입니다. |
| nop:아니오 | 로컬 루틴으로 분기한 후에 사용되는 no-op 명령어를 지정합니다. Nop는 특수 값 cror15, cror31, ori 중
하나 또는 8자리 16진수일 수 있습니다. 디폴트는 ori
명령어입니다. -bnop:cror15 옵션을 지정하는 것은
-bcror15 옵션을 지정하는 것과 같습니다. -bnop:cror31 옵션을
지정하는 것은 -bcror31 옵션을 지정하는 것과 같습니다. 특수 nop 옵션 중 하나를 지정하면 모든 이전 nop 옵션이 대체됩니다. Nop이 8자리 16진수인 경우에는 임의의 기계 명령어를 지정합니다. 이 기계 명령어는 Nop 명령어에 대해 이전에 지정된 모든 특수값을 재정의합니다. 이 양식을 사용하는 경우 이 옵션을 반복할 수 있습니다. 지정된 마지막 기계 명령어는 모듈 내 분기 후 바인더에 의해 생성되는 명령어입니다. 지정된 다른 기계 명령어는 no-op 명령어로 인식되지만, 선호하는 no-op 명령어로 변환됩니다. |
| noquiet | 각 바인더 부속 명령과 그 결과를 표준 출력에 기록합니다. 디폴트는 quiet 옵션입니다. |
| noreorder | 이 옵션은 모든 XMC_TC (TOC 주소 상수) 및 XMC_TD (TOC 변수) CSECT를 결합하고 이를 데이터 섹션에 배치하고 모든 BSS 기호를 결합하여 bss 섹션에 배치하는 것을 제외하고 CSECT를 다시 정렬하지 않습니다. 다른 모든 CSECT는 텍스트 섹션에 배치되므로 텍스트와 데이터가 출력 파일에서 혼합됩니다. noreorder 옵션을 사용하면 출력 파일의 텍스트 섹션이 더 이상 위치 독립적이지 않을 수 있으며 텍스트 섹션이 위치 독립적이지 않은 경우 시스템 로더가 모듈을 로드하지 않습니다. 따라서 프로그램 및 커널 확장에 이 옵션을 사용하지 마십시오. noobjreorder 및 noreorder 옵션이 모두 지정되는 경우에는 noreorder 옵션이 우선합니다. 디폴트는 reorder 옵션입니다. |
| nortl | 출력 파일에 대한 런타임 링크를 사용하지 않습니다. 이 옵션은 nortllib 및 nosymbolic- 옵션을 의미합니다. 또한 rtl 옵션 아래에 설명된 추가 조치는 수행되지 않습니다. svr4 옵션을 사용하지 않는 경우 이 옵션이 기본값입니다. |
| nortllib | 이 옵션은 실행시간 링커에 대한 참조를 포함하지 않습니다. 기본 프로그램이 이 옵션으로 링크되는 경우, 프로그램에서 사용되는 공유 모듈이 링크되는 방법에 관계없이 프로그램에서 런타임 링크가 발생하지 않습니다. svr4 옵션을 사용하지 않는 경우 이 옵션이 기본값입니다. |
| norwexec | 시스템의 sed_config 설정이 해제되지 않은 경우 프로세스의 개인용 데이터 영역에 비실행 권한이 있음을 지정합니다. |
| noshrsymtab | _AOUT_SHR_SYMTAB 플래그가 출력 오브젝트에서 설정되는 것을 방지합니다. 이 옵션은 기본 상태입니다. |
| nostabsplit | 디버그 섹션이 확장자가 .stab인 대체 출력 파일에 기록되는 것을 방지합니다. 이 옵션은 디폴트 설정입니다. |
| nostrip | 이 옵션은 스트립된 출력 파일을 생성하지 않습니다. 따라서 기호 테이블 및 재배치 정보가 출력 파일에 기록됩니다. 이 옵션은 -s 플래그를 재정의합니다. 이 옵션이 디폴트입니다. |
| nosymbolic | nosymbolic 속성을 명시적인 속성 없이 반출된 대부분의 기호에 지정합니다. 자세한 정보는 반출된 기호의 속성을 참조하십시오. 디폴트는 nosymbolic- 옵션입니다. |
| nosymbolic- | nosymbolic- 속성을 명시적인 속성 없이 반출된 대부분의 기호에 지정합니다. 자세한 정보는 반출된 기호의 속성을 참조하십시오. 이 옵션이 디폴트입니다. |
| notextro 또는 nro | 이 옵션은 출력 오브젝트 파일의 텍스트 섹션에 대한 로드 시간 재배치 항목이 없는지 확인하지 않습니다. 이 옵션이 디폴트입니다. |
| notmprelname | 바인더가 일반 인스턴스 생성을 확인하지 않습니다. 주: 이 옵션은 32비트모드에만 필요합니다. 이 옵션은 64비트오브젝트를 빌드할 때 무시됩니다.
|
| notypchk | 이 옵션은 외부 기능 호출 간에 함수-매개변수 유형을 확인하지 않습니다. 디폴트는 typchk 옵션입니다. |
| nov | 이 옵션은 로드 맵 파일에 추가 정보를 기록하지 않습니다. 이 옵션은 디폴트이며 -v 플래그를 재정의합니다. |
| noweaklocal | 일반 검색 순서를 사용하여 약한 기호를 해석합니다. 이 옵션은 weaklocal 옵션을 재정의합니다. 디폴트 옵션입니다. |
| nox | 이 옵션은 출력 파일을 실행 파일로 만들지 않습니다. 보조 헤더와 로더 섹션이 모두 기록되지 않습니다. 보조 헤더 또는 로더 섹션에 기록된 값을 지정하는 플래그 및 옵션은 이 옵션이 사용될 때 영향을 주지 않습니다. 디폴트는 x 옵션입니다. |
| nro | notextro 옵션과 동일하게 기능합니다. |
| nso | noautoimp 옵션과 동일하게 기능합니다. |
| order_file:FileID | FileID에 나열된 기호를 지정된 순서대로 맵핑합니다. 파일에 나열되는 기호는 스토리지 맵핑 클래스가 같은 다른 기호보다 먼저 맵핑됩니다. 파일에서 지정되는 함수 이름은 점으로 시작해야 합니다. 점이 없는 함수 이름은 함수 설명자를 나타내기 때문입니다. |
| order:스펙 | 출력 파일에서 일부 기호가
맵핑되는 순서를 제어합니다. 스펙은 다음과 같습니다.
|
| pD:오리진 | 데이터 섹션의 시작을 포함하는 파일 페이지의 첫 번째 바이트 주소로 Origin 을 지정합니다. 예를 들어, 데이터 섹션이 오브젝트 파일의 오프셋 0x22A0 에서 시작하고 pD:0x20000000 가 지정되면 데이터 섹션의 첫 번째 바이트에 주소 0x200002A0가 지정됩니다. 이 옵션은 4096 (0x1000) 바이트의 페이지 크기를 가정합니다.참고: -bpD 및 -D 플래그가 모두 지정되면 후자의 플래그가 우선합니다.
|
이전에 지정된 플러그인 경로를 취소하려면 path 변수를 -bplugin:로 지정하지 마십시오. 입력 파일이 비트코드 파일이거나 비트코드 파일을 포함하는 아카이브이고 플러그인 경로가 지정되지 않은 경우 ld 명령이 실패합니다. |
|
plugin_opt 옵션을 여러 번 지정할 수 있습니다. 이 옵션은 일반적으로 컴파일러에서 생성됩니다. |
|
| pT:오리진 | 텍스트 섹션의 시작을 포함하는 파일 페이지의 첫 번째 바이트 주소로 Origin 을 지정합니다. 예를 들어, 텍스트 섹션이 오브젝트 파일의 오프셋 0x264 에서 시작하고 pT:0x10000000 가 지정되면 텍스트 섹션의 첫 번째 바이트에 주소 0x10000264가 지정됩니다.
|
| quiet | 이 옵션은 바인더 부속 명령 및 해당 결과를 표준 출력에 기록하지 않습니다. 이 옵션이 디폴트입니다. |
| 항목 | 설명 |
|---|---|
| R:FileID | map:FileID 옵션과 동일하게 기능합니다. |
| r 또는 reorder | CSECT를 save 명령 처리의 일부로서 다시 정렬합니다. 재배열 프로세스는 참조 근접성으로 같은 스토리지 맵핑 클래스의 CSECT를 배열합니다. 이 옵션이 디폴트입니다. |
| ras | 모듈이 스토리지 키에 안전하고 복구에 안전함을 나타내기 위해 출력 모듈의 보조 헤더에서 플래그를 설정합니다. 커널 확장을 키 안전하고 복구 안전하게 만드는 방법에 대한 자세한 정보는 커널 확장 및 장치 지원 프로그래밍 개념 을 참조하십시오. |
| rename:기호, NewName | 외부 기호 Symbol의 이름을 NewName으로 바꿉니다. 실제로 모든 오브젝트 파일의 Symbol에 대한 모든 정의 및 참조의 이름이 파일이 처리되기 전에 NewName으로 바뀌는 것과 같습니다. 기본적으로 기호는 이름이 바뀌지 않습니다. |
| reorder | r 옵션과 동일하게 기능합니다. |
| ro 또는 textro | 결과 오브젝트 파일의 텍스트 섹션에 대한 로드 시간 재배치 항목이 없는지 확인합니다. 디폴트는 nro 옵션입니다. |
| rtl | 출력 파일에 대한 런타임 링크를 사용합니다. 이 옵션은
rtllib 및 symbolic 옵션을 의미합니다. 동적 모드가 적용되는 경우 ( dynamic 및 static 옵션 참조) rtl 옵션을 사용하면 -l 플래그로 지정된 입력 파일이 .a뿐 기능 중 가능 지정된 .so 로 끝날 수 있습니다. 공유 오브젝트인 모든 입력 파일은 출력 파일 로더 섹션에서 사용자 프로그램의 종속사항으로서 나열됩니다. 공유 오브젝트는 명령행에 지정된 바와 동일한 순서대로 나열됩니다. 아카이브에 포함된 공유 오브젝트는 아카이브가 공유 오브젝트 멤버에 대한 자동 로드를 지정하는 경우에만 나열됩니다. 다음 행으로 가져오기 파일을 작성하여 아카이브 멤버 foo.o 에 대한 자동 로드를 지정할 수 있습니다.
가져오기 파일을 작성한 후 가져오기 파일을 멤버로 아카이브에 추가하십시오. -bautoload 옵션을 사용하여 아카이브 멤버 foo.o 에 대한 자동 로드를 지정할 수도 있습니다.-bautoloads 옵션을 사용하여 추가 아카이브 멤버를 지정할 수 있습니다. 반입 파일의 첫 번째 행이 |
| rtllib | 이 옵션은 실행시간 링커에 대한 참조를 포함합니다. 런타임 링커는 librtl.a에 정의되며, 내재적 -lrtl 플래그는 명령행에 자동으로 추가됩니다. 이 옵션 ( rtl 옵션에 내포됨) 은 기본 프로그램을 링크하거나 런타임 링크가 발생하지 않을 때 사용해야 합니다. 공유 오브젝트는 이 옵션으로 링크하지 않아도 됩니다. svr4 옵션을 사용하지 않는 경우 기본값은 nortllib 옵션입니다. |
| rwexec | 프로세스의 개인용 데이터 영역의 실행 권한이 시스템의 sed_config 설정에 따라 판별되도록 지정합니다. 이 옵션이 디폴트입니다. |
| rwexec_must | 시스템의 sed_config 설정에 관계없이 프로세스의 개인용 데이터 영역에 실행 권한이 있음을 지정합니다. |
| S:번호 | -S 플래그와 동일하게 기능합니다. |
| scalls:FileID | 오브젝트 파일의 주소 맵을 FileID에 씁니다. 기호는 알파벳순으로 나열됩니다. 맵에 나열되는 각 기호마다 해당 기호로부터 다른 기호로의 참조가 나열됩니다. 기본적으로 파일이 생성되지 않습니다. scalls 옵션에 대한 자세한 정보는 주소 맵을 참조하십시오. |
| shared | dynamic 옵션과 동일하게 기능합니다. |
| shrsymtab | 64비트 모드의 경우, XCOFF 보조 헤더에서 _AOUT_SHR_SYMTAB 플래그를 설정합니다. 파일 이 64비트프로그램인 경우, 프로그램이 실행될 때 공유 기호 테이블이 작성됩니다. File 이 64비트오브젝트이지만 64비트프로그램이 아닌 경우 _AOUT_SHR_SYMTAB 플래그를 설정할 수 있지만 런타임 시에는 영향을 미치지 않습니다. 32비트 모드에서는 이 플래그가 무시됩니다. 디폴트는 noshrsymtab입니다. |
| smap:FileID | 오브젝트 파일의 주소 맵을 FileID에 씁니다. 기호는 알파벳순으로 나열됩니다. 기본적으로 파일이 생성되지 않습니다. smap 옵션에 대해 자세히 알아보려면 다음에 오는 주소 맵 을 참조하십시오. |
| so | autoimp 옵션과 동일하게 기능합니다. |
| stabcmpct:레벨 | 디버그 섹션의 stabstrings에 대한 압축 레벨을
지정합니다. stabstring은 8보다 긴 문자열입니다. 기호 테이블의 각 substring은 디버그 섹션에서 고유한
오프셋을 갖습니다. Level에 유효한 값은 다음과 같습니다.
|
| stabsplit | 이 옵션을 사용하면 디버그 섹션이 확장자가 .stab인 대체 출력 파일에 기록됩니다. |
| stackpsize:페이지 크기 | 프로세스 주 스레드 스택에 대한 psize
페이지 크기를 바이트 단위로 요청합니다. 값은 10진수, 16진수
또는 8진수로 지정할 수 있습니다. 숫자 스펙은 C 프로그래밍 언어에서와 동일합니다. 또한 페이지 크기는 숫자와 그 뒤에 오는 1문자접미부로 지정할 수 있습니다.
-b stackpsize:16k 또는 -b stackpsize:0x4000 는 프로세스 기본 스레드 스택에 대해 0x4000 을 요청하고 XCOFF 헤더에서 F_VARPG 비트를 설정합니다. |
| static | 이 옵션을 사용하면 링커가 정적 모드에서 후속 공유 오브젝트를 처리합니다. 정적 모드에서는 공유 오브젝트가 출력 파일에서 정적으로 링크됩니다. |
| svr4 | 이 옵션은 명령행에서 일부 다른 옵션의 의미와
링커의 표준 작동을 변경합니다. 링크에
미치는 영향은 다음과 같습니다.
|
| sxref:FileID | 오브젝트 파일의 주소 맵을 FileID에 씁니다. 기호는 알파벳순으로 나열됩니다. 맵에 나열되는 각 기호마다 다른 기호에서 해당 기호로의 참조가 나열됩니다. 기본적으로 파일이 생성되지 않습니다. sxref 옵션에 대해 자세히 알아보려면 다음에 오는 주소 맵 을 참조하십시오. |
| symbolic | symbolic 속성을 명시적인 속성 없이 반출된 대부분의 기호에 지정합니다. 자세한 정보는 다음에 오는 반출된 기호의 속성 을 참조하십시오. 이 옵션은 svr4 옵션이 사용될 때 기본값입니다. 그렇지 않으면 기본값은 symbolic- 옵션입니다. |
| textro | ro 옵션과 동일합니다. |
| textpsize:페이지 크기 | 텍스트에 대한 psize 페이지 크기를 바이트 단위로 요청합니다. 값은 10진수, 16진수
또는 8진수로 지정할 수 있습니다. 숫자 스펙은 C 프로그래밍 언어에서와 동일합니다. 또한 페이지 크기는 숫자와 그 뒤에 오는 1문자접미부로 지정할 수 있습니다.
-b textpsize:16k 또는 -b textpsize:0x4000 는 텍스트에 대해 0x4000 을 요청하고 XCOFF 헤더에서 F_VARPG 비트를 설정합니다. |
| tmplrename | 바인더가 일반 인스턴스화를 확인해야 함을 지정합니다. 바인더는 __tfNNxxx_name 양식의 기호를 검사하고 기호 이름을
name으로 바꿉니다. 디폴트는 -bnotmplrename입니다. 주: 이 옵션은 32비트모드에만 필요합니다. 64비트
오브젝트를 빌드할 때는 이 옵션이 무시됩니다.
|
| typchk | 외부 함수 호출 사이의 함수 매개변수 유형 검사를
수행합니다. 매개변수 유형 검사의 정보는 컴파일러 및 어셈블러에 의해 오브젝트 파일에 포함될 수 있습니다. 이 옵션이 디폴트입니다. 유형 검사에 대한 자세한 정보는 XCOFF 오브젝트 파일 형식을 참조하십시오. |
| weaklocal | 참조되는 오브젝트 파일에서 먼저 약한 기호를 검색하는 것으로 지정합니다. 기호를 찾을 수 없으면 일반 검색 순서가 재개됩니다. |
| x | 오류가 없는 경우 출력 파일을 실행 파일로 만듭니다. 이 옵션은 기본 옵션입니다. |
| X 또는 xref:FileID | 오브젝트 파일의 주소 맵을 FileID에 씁니다. 기호는 섹션별로 분류된 후 주소별로 분류됩니다. 맵에 나열되는 각 기호마다 다른 기호에서 해당 기호로의 참조가 나열됩니다. 기본적으로 파일이 생성되지 않습니다. xref 옵션에 대해 자세히 알아보려면 다음에 오는 주소 맵 을 참조하십시오. |
실행시간 링크
기본적으로 공유 오브젝트에서 기호에 대한 참조는 링크 시 바인드됩니다. 즉, 출력 모듈은 반입된 기호를 특정 공유 오브젝트의 정의와 연관시킵니다. 로드 시에는 다른 공유 오브젝트가 동일한 기호를 내보내는 경우에도 지정된 공유 오브젝트의 정의가 사용됩니다.
프로그램이 실행시간 링커를 사용하도록 하여 일부 기호가 로드 시에 다시 설정되도록 할 수 있습니다. 실행시간 링커를 사용하는 프로그램을 작성하려면 -brtl 옵션으로 프로그램을 링크하십시오. 공유 모듈이 링크되는 방법이 기호의 재바인드에 영향을 줍니다.
-G 플래그를 사용하여 런타임 링크에 사용 가능한 공유 오브젝트를 빌드할 수 있습니다. rtl_enable 명령으로 기존 공유 오브젝트를 다시 링크하여 기존 공유 오브젝트에 대한 런타임 링크를 완전히 사용할 수 있습니다 (제거되지 않은 경우).
기호 가시성
입력 오브젝트 파일의 글로벌 및 약한 기호는 가시성 기호로 표시할 수 있습니다. 네 가지 기호 가시성이 정의됩니다.
| Symbol | 가시성 |
|---|---|
| 내부 | 기호를 내보내지 않습니다. 기호의 주소는 다른 프로그램 또는 공유 오브젝트에 제공될 수 없지만 링커가 이를 검증할 수 있습니다. |
| 숨겨짐 | 기호를 내보내지 않습니다. |
| 보호됨 | 기호는 내보내기되지만 런타임 링크가 사용되는 경우에도 다시 가져오거나 선점할 수 없습니다. |
| 반출됨 | 기호는 글로벌 내보내기 속성과 함께 내보내집니다. |
기호의 가시성은 어셈블러 소스 파일에서 지정될 수 있습니다. 일부 컴파일러도 가시성을 지원합니다. 세부사항은 해당 컴파일러 문서를 참조하십시오.
반출 파일을 사용하여 기호에 대한 가시성을 지정할 수도 있습니다. 일반적으로 내보내기 파일에 지정된 가시성이 오브젝트 파일에 지정된 가시성보다 우선합니다. 이 링커는 프로그램 또는 공유 오브젝트에 대한 반출 리스트를 작성할 때 기호 가시성을 고려합니다.
반입 및 반출 파일 형식(-bI: 및 -bE: 플래그)
반입 또는 반출 파일 내 각 행에는 기호의 이름과, 선택적으로 주소 또는 키워드가 그 뒤에 옵니다. 기본 키워드는 svc, svc32, svc3264, svc64, syscall, syscall32, syscall3264, syscall64, symbolic, nosymbolic, nosymbolic-, list, cm, bss, internal, hidden, protected, export입니다. 몇 개의 추가 키워드는 weak 및 required이며, 이는 다른 키워드와 함께 사용할 수 있습니다.
반입 파일에서, 주소를 지정하면 기호가 고정 주소(예: 공유 메모리 세그먼트의 주소)에 맵핑될 수 있습니다. 또한 키워드 cm, bss 또는 weak 중 하나를 사용하여 반입된 기호의 스토리지 클래스를 지정할 수 있습니다. autoexp 옵션을 사용하는 경우, 반입된 기호의 스토리지 클래스가 자동으로 반출되는 기호에 영향을 줍니다. 반입 파일에서 다른 키워드가 지정되는 경우 해당 키워드는 무시됩니다.
반출 파일에서, 함수 이름 뒤에 svc, svc32, svc3264, svc64, syscall, syscall32, syscall3264 또는 syscall64 키워드를 사용하여 함수가 시스템 호출임을 나타낼 수 있습니다. 이 옵션은 커널 확장을 링크할 때 필요합니다. 출력 파일이 커널 확장이 아니면 해당 키워드는 symbolic 키워드와 같습니다.
list 키워드를 사용하여 기호가 내보낸 기호로 표시되지 않더라도 출력 파일의 로더 섹션에 나열되도록 할 수 있습니다. list 키워드는 런타임 시 일부 기호를 처리하려는 애플리케이션에 사용할 수 있습니다. 나열된 기호는 시스템 로더 또는 실행시간 링커가 처리하지 않습니다.
symbolic, nosymbolic 또는 nosymbolic 키워드를 사용하여 속성을 반출된 기호와 연관시킬 수 있습니다. 반출 파일의 기호 주소는 무시됩니다. 내보내기 파일에서 cm 및 bss 키워드는 nosymbolic 키워드와 동일합니다. 기호의 가시성은 internal, hidden, protected또는 export 키워드를 사용하여 지정할 수 있습니다. 자세한 정보는반출된 기호의 속성 을 참조하십시오.
weak 키워드를 사용하여 약한 기호 바인딩을 지정할 수 있으며 다른 속성과 함께 사용할 수 있습니다.
기호가 반입되지 않고 정의되었는지 검증하려면 required 키워드를 사용하십시오. 이러한 기준을 충족하지 않는 기호의 경우 오류가 인쇄됩니다.
ld 명령은 다음 지침에 따라 반입 및 반출 파일을 처리합니다.
- 빈 줄은 무시합니다.
- *(별표)로 시작하는 행은 주석이며 무시됩니다.
#(#, 공백)로 시작되는 행은 setopt 바인더 부속 명령(-bdbg:Option)에 피연산자를 제공합니다. 예를 들어,
# verbose가 포함된 행은 바인더가 파일에서 읽을 때 각 기호를 나열하도록 합니다. 이러한 옵션 설정은 파일을 처리하는 동안에만 활성화됩니다. # 32, # 64, # no32및 # no64 옵션을 사용하여 나열된 기호를 32비트링크, 64비트링크 또는 둘 다에 사용해야 하는지 여부를 지정할 수 있습니다.32-bit and 64-bit Import File Options
항목 설명 32 이 옵션은 32비트모드에서 링크할 때 후속 기호가 처리되어야 하지만 64비트모드에서 링크할 때는 무시되도록 지정하기 위해 가져오기 또는 내보내기 파일에서 사용됩니다. 32 또는 64 옵션을 지정하지 않으면 모든 기호가 32비트 모드와 64비트 모드에서 모두 처리됩니다. 64 이 옵션은 64비트모드에서 링크할 때 후속 기호가 처리되어야 하지만 32비트모드에서 링크할 때는 무시되도록 지정하기 위해 가져오기 또는 내보내기 파일에서 사용됩니다. 32 또는 64 옵션을 지정하지 않으면 모든 기호가 32비트 모드와 64비트 모드에서 모두 처리됩니다. no32 또는 no64 이전 32 또는 64를 재정의합니다. 후속 기호는 32비트 및 64비트 모드에서 모두 처리됩니다. - 반입 파일을 처리할 때 #! (#, 느낌표) 로 시작하는 행은 후속 반입 기호와 연관될 공유 라이브러리 이름을 제공합니다. 이 줄은 두 번 이상 나타날 수 있으며 '
#!'로 시작하는 다음 줄이 읽힐 때까지 후속 기호에 적용됩니다. 이 파일 이름 정보는 XCOFF 오브젝트 파일의 로더 섹션에 배치됩니다. 이 정보는 실행 시 적절한 오브젝트 파일을 찾기 위해 시스템 로더가 사용됩니다. 가져오기 파일 이름이 ' ipath/ifile '(imember)인 경우, 로더 섹션에 배치되는 파일 이름은 다음과 같이 가져오기 파일 이름과 가져오기 파일의 '#!줄의 내용을 기준으로 결정됩니다:항목 설명 #! ( #!뒤에 아무 것도 없음) 널 경로, 널 파일 및 널 번호를 사용하십시오. 이 옵션은 시스템 로더에 의해 지연된 가져오기로 처리됩니다.#! () ipath,ifile,imember를 사용합니다. 이 행은 반입 파일이 명령행에서 InputFile 매개변수로 지정되는 경우 사용할 수 있습니다. 이 경우 파일은#!로 시작해야 합니다. 이 행은 다른#!행에서 변경된 경우 기본 이름을 복원하는 데 사용할 수도 있습니다.#! 경로/파일 (멤버) 지정된 경로, 파일, 멤버를 사용합니다. #! 경로/파일 지정된 경로 및 파일과 널(null) 멤버를 사용합니다. #! 파일 널(null) 경로, 지정된 파일, 널(null) 멤버를 사용합니다. 실행시간에 공유 오브젝트를 찾기 위해 디렉토리 리스트를 검색합니다. #! (멤버) ipath,ifile, 지정된 멤버를 사용합니다. 실행시간에 공유 오브젝트를 찾기 위해 디렉토리 리스트를 검색합니다.#! 파일 (멤버) 널(null) 경로와 지정된 파일 및 멤버를 사용합니다. 실행시간에 공유 오브젝트를 찾기 위해 디렉토리 리스트를 검색합니다. #! . (단일 점) 이 이름은 기본 실행 파일을 나타냅니다. 서로 다른 이름을 갖는 여러 개의 주 프로그램으로부터 기호를 반입하는 공유 오브젝트를 작성 중일 때 이 파일 이름을 사용합니다. 기본 프로그램은 다른 모듈에서 가져온 기호를 내보내야 합니다. 그렇지 않으면 로드에 실패합니다. 이 가져오기 파일 이름은 실행시간 링커와 함께 또는 실행시간 링커 없이 사용할 수 있습니다. #! .. (점 두 개) 이 이름을 사용하여 실행시간 링커에 의해 해석되는 기호를 나열하십시오. 이 파일 이름을 사용하여 실행시간 링커를 사용하는 프로그램에서 사용되는 공유 오브젝트를 작성하십시오. rtllib 옵션으로 링크되지 않은 프로그램의 .. 에서 기호를 가져오는 모듈을 사용하는 경우 기호가 분석되지 않으며 이러한 기호에 대한 참조로 인해 정의되지 않은 동작이 발생합니다.
-brtl 옵션이 사용될 때 아카이브 멤버를 자동으로 로드하기 위해 다음과 같이 반입 파일을 작성할 수 있습니다. shr.so가 아카이브의 공유 오브젝트인 경우 다음과 같이 반입 파일을 작성하십시오.
# autoload
#! (shr.so)
필요한 경우 추가 행에 추가 멤버 이름을 나열할 수 있습니다. shr.so 에서 가져온 기호를 shr.so 자체에서 읽기 때문에 가져오기 파일에 기호 이름을 나열할 필요가 없습니다.
공유 라이브러리 만들기에 대한 자세한 내용은 공유 라이브러리 만들기를 참조하세요. 로딩 및 바인딩에 대한 자세한 내용은 ' load 서브루틴을 참조하세요.
반출된 기호의 속성
런타임 링크를 사용할 때 기호가 적절한 속성으로 내보내기되는 경우에만 동일한 모듈의 기호에 대한 참조를 다시 가져올 수 있습니다. symbolic 속성을 가진 기호에 대한 참조는 다시 되돌릴 수 없습니다. nosymbolic 속성이 있는 기호에 대한 참조는 다시 가져올 수 있습니다. 기호가 변수인 경우 nosymbolic- 속성을 가진 기호에 대한 참조를 다시 가져올 수 있습니다. 함수 기호의 경우, 함수 포인터를 사용하여 호출을 다시 설정할 수 있지만 직접 함수 호출은 다시 설정할 수 없습니다. nosymbolic- 속성은 디폴트이며 이전 버전의 운영 체제와의 호환성을 위해 제공되지만 사용은 권장되지 않습니다.
실행시간 링커를 사용하지 않는 경우, nosymbolic 속성을 사용하지 마십시오. 모듈 내 함수 호출은 글로벌 연계 코드를 사용하여 함수 설명자를 통해 간접적으로 작성되기 때문입니다. 그렇지 않으면, 반출된 기호의 속성은 실행시간 링커를 사용하지 않는 프로그램과 함께 사용되는 모듈에 대해 영향 수도와 이상이 없습니다.
반출 파일에 나열된 기호에 대한 명시적 반출 속성을 지정할 수 있습니다. 명시적인 속성이 없는 대부분의 기호는 symbolic, nosymbolic 또는 nosymbolic- 옵션으로 지정된 대로 디폴트 반출 속성과 함께 반출됩니다.
기호가 키워드가 없이 반출 파일에 나열되고 기호의 가시성이 입력 파일에서 지정되는 경우, 기호의 가시성이 유지됩니다. 입력 기호의 가시성은 internal, hidden, protected 또는 export 키워드를 사용하여 재정의될 수 있습니다.
weak 내보내기 속성은 연관된 기호의 맵핑 유형을 로더 섹션에서 L_WEAK로 표시합니다.
반입된 기호에는 weak 반출 속성만 있을 수 있습니다. 다른 모듈에서 기호를 가져오는 경우 기호에 대한 모든 참조를 다시 가져올 수 있습니다. 그러나 기호가 고정된 누르입 수된 누르입니다. 모든 참조가 이 고정된 주소에 바인드되며 실행시간 링커에 의해 다시 설정될 수 없습니다. 시스템 로더는 지연된 반입을 해석해야 합니다. 런타임 링커는 지연된 가져오기에 대한 참조를 분석하거나 리바인드하지 않습니다.
반입되지 않은 기호의 반출에는 다음 룰이 사용됩니다.
- 기호가 list 속성을 갖는 경우, 로더 섹션 기호 테이블에 나열되지만, L_EXPORT 플래그가 기호 테이블 항목에 설정되지 않습니다. 실행시간 링커는 이러한 기호를 무시합니다.
- 명시적 속성 또는 명시적 가시성을 사용하여 기호를 내보낸 경우 명시적 속성 또는 가시성이 사용됩니다.
- 기호가 BSS 기호이면 nosymbolic 속성과 함께 반출됩니다.
- 그렇지 않으면 기호가 symbolic, nosymbolic 또는 nosymbolic- 옵션으로 지정된 대로 글로벌 속성과 함께 반출됩니다. 디폴트 글로벌 속성은 nosymbolic-입니다.
주소 맵
ld 명령은 주소 맵을 생성하여 출력 오브젝트 파일에서 기호 배치를 나열합니다. map(또는 R) 옵션을 사용하는 경우, 해석되지 않는 기호와 반입된 기호가 먼저 나열되고 그 뒤로 주소 순서대로 각 섹션의 기호가 나열됩니다. calls(또는 C) 옵션을 사용하는 경우, 나열되는 각 기호 다음에는 해당 기호에서 다른 기호로의 참조 리스트가 옵니다. xref(또는 X) 옵션을 사용하는 경우, 나열되는 각 기호 다음에는 다른 기호에서 해당 기호로의 참조 리스트가 옵니다. smap, scalls또는 sxref 옵션을 사용하는 경우 주소 맵에는 map, calls또는 xref 옵션으로 나열된 것과 동일한 정보가 포함되지만 기호는 알파벳순으로 나열됩니다.
스토리지 클래스 C_HIDEXT가 있는 내부 기호는 기호 이름을 묶는 < 및 > (꺾쇠괄호) 문자로 인쇄됩니다. 스토리지 클래스 C_EXT를 사용하는 외부 기호의 이름은 꺾쇠괄호 없이 인쇄되고, 스토리지 클래스 C_WEAKEXT를 사용하는 기호는 기호 이름을 묶는 { 및 } 문자로 인쇄됩니다.
각 기호에 대해 다음 정보가 나열됩니다.
- 기호가 반입, 반출 또는 시작점인지 여부 표시. *(별표)는 시작점을 표시하는 데 사용되고 I는 반입된 기호를 표시하는 데 사용되며 E는 반출된 기호를 표시하는 데 사용됩니다.
- 기호의 주소(반입된 기호의 경우는 예외)
- 길이 및 정렬(CSECT 및 BSS 기호의 경우)
- 스토리지 맵핑 클래스
- 기호 유형
- 기호 번호(이름이 같은 기호를 구별하는 데 사용됨)
- 기호 이름
- 입력 파일 정보
스토리지 맵핑 클래스와 기호 유형은 /usr/include/syms.h 파일에서 정의됩니다. 주소 맵에서는 스토리지 맵핑 클래스 XMC_TC0 가 T0으로 표시되는 것을 제외하고 마지막 두 문자만 표시됩니다.
입력 파일 정보는 입력 파일의 유형에 따라 다릅니다. 오브젝트 파일의 경우, C_FILE 기호 테이블 항목에서 얻은 소스 파일 이름이 나열됩니다. 오브젝트를 아카이브 파일에서 가져온 경우, 오브젝트 파일 이름은 다음 형식으로 나열됩니다.
ArchiveFileName[ObjectName]
공유 오브젝트 이름은 { } (중괄호) 사이에 나열됩니다. 공유 오브젝트가 반입 파일에 의해 정의되는 경우, 반입 파일의
이름이 공유 오브젝트 이름 앞에 나열됩니다.
반입 기호는 기호 유형이 ER이지만 연관된 파일 입력 정보를 갖습니다. 미정의 기호도 ER의 기호 유형으로 나열되지만, 기호 번호를 제외한 모든 다른 열은 공백으로 남습니다.
-T 및 -D 플래그 (또는 pT 또는 pD 옵션) 는 이러한 주소 맵에 인쇄되는 주소에 영향을 줍니다. 머신 레벨 디버깅의
경우, 기호가 실행시간에 갖는 것과 동일한 주소로 나열되도록
주소를 선택하는 데 도움이 됩니다. 비공개로 로드된
공유 오브젝트를 사용하지 않는 32비트 프로그램의 경우,
-bpT:0x10000000 및 -bpD:0x20000000 옵션을 지정하여 올바른 주소를 선택할 수 있습니다. 이러한 옵션은 기본적으로 /etc/xlC.cfg 또는 /etc/vac.cfg 파일에서 정의됩니다.
환경 변수
다음 환경 변수는 ld 명령 실행에 영향을 줍니다.
| 항목 | 설명 |
|---|---|
| LIBPATH | LIBPATH가 정의되면 해당 값이 디폴트 라이브러리 경로 정보로 사용됩니다. 기본 라이브러리 경로는 /usr/lib:/lib입니다. -L 플래그가 지정되지 않고 -blibpath 옵션이 지정되지 않으면 출력 파일의 로더 섹션에서 디폴트 라이브러리 경로 정보가 기록됩니다. 지정된 옵션에 관계없이, 명령행에서 지정되는 라이브러리를 검색할 때 LIBPATH가 사용됩니다. |
| TMPDIR | 출력 파일이 있거나 원격 파일 시스템에 있는 경우 ld 명령은 임시 출력 파일을 생성합니다. 임시 출력 파일은 TMPDIR에 의해 지정된 디렉토리에 작성됩니다. TMPDIR이 정의되지 않으면 임시 출력 파일이 /tmp 디렉토리(출력 파일이 원격인 경우) 또는 기존 출력 파일과 동일한 디렉토리에서 작성됩니다. |
| 오브젝트 모드 | -b32 옵션과 -b64 옵션을 모두 사용하지 않는 경우, OBJECT_MODE 환경 변수를 검사하여 링크 모드를 판별합니다. OBJECT_MODE 의 값이 32 또는 64인 경우 32비트또는 64비트모드가 사용됩니다. 값이 32_64 또는 다른 값인 경우 링커는 오류 메시지를 인쇄하고 0이 아닌 리턴 코드로 종료합니다. 그렇지 않으면 32비트모드가 사용됩니다. |
예
- 여러 오브젝트 파일을 링크하고 운영 체제에서 실행할 a.out 파일을 생성하려면 다음 명령을 입력하십시오.
-lc(소문자 L)는 libc.a 라이브러리를 링크합니다. libc.a 라이브러리를 링크하는 더 간단한 방법은 다음과 같이 cc 명령 (컴파일러) 을 사용하여 파일을 링크하는 것입니다.ld /usr/lib/crt0.o pgm.o subs1.o subs2.o -lccc pgm.o subs1.o subs2.o - 출력 파일의 이름을 지정하려면 다음 명령을 입력하십시오.
이는 파일 pgm에 출력을 작성합니다.cc -o pgm pgm.o subs1.o subs2.o - 오브젝트 파일 subs1.o 만 변경된 경우 pgm 를 다시 링크하려면 다음 명령을 입력하십시오.
원래 오브젝트 파일 pgm.o 및 subs2.o에서 가져온 CSECT는 pgm 파일에서 읽습니다. 이 기법은 프로그램이 많은 입력 파일로 구성되지만, 한 번에 소수의 파일만 변경되는 경우 링크 프로세스를 가속화할 수 있습니다.cc -o pgm subs1.o pgm - 라이브러리 서브루틴과 링크하려면 다음 명령을 입력하십시오.
이는 오브젝트 모듈 pgm.o, subs1.o및 subs2.o, mylib.a 아카이브의 서브루틴 및 -l (소문자 L) 플래그 ( /usr/lib/libtools.a 파일을 의미함) 로 지정된 라이브러리의 서브루틴을 링크합니다.cc pgm.o subs1.o subs2.o mylib.a -ltools - 공유 오브젝트를 생성하려면 다음 명령을 입력하십시오.
이는 -lc 플래그에 의해 지정된 라이브러리 libc.a 의 오브젝트 파일 subs1.o, subs2.o및 서브루틴을 링크합니다. shrsub.exp 파일에 지정된 기호를 내보내고 shrsub.o파일에 링크된 공유 오브젝트를 저장합니다. -bM:SRE는 링크된 오브젝트 파일에서 공유 오브젝트 플래그를 설정합니다.ld -o shrsub.o subs1.o subs2.o -bE:shrsub.exp -bM:SRE -lc - 이전에 생성된 공유 오브젝트 shrsub.o 와 링크하려면 다음 명령을 입력하십시오.
이 명령은 오브젝트 파일 pgm.o를 shrsub.o의 반출된 기호와 링크합니다. 링크된 출력은 오브젝트 파일 pgm에 저장됩니다. -L '.' 는 시스템 로더가 shrsub.o 공유 오브젝트를 찾기 위해 사용하는 라이브러리 검색 경로에 현재 디렉토리를 추가합니다. 런타임 시 이 프로그램은 shrsub.o 파일의 인스턴스를 포함하는 디렉토리에서 실행되거나 shrsub.o 파일이 /usr/lib 표준 라이브러리 디렉토리에 있는 경우에만 로드됩니다. 프로그램을 어디서든 실행하려면 -L `pwd`옵션을 사용하십시오.cc -o pgm pgm.o shrsub.o -L '.'시스템 로더가 검색하는 디렉토리 목록은 dump 명령을 사용하여 볼 수 있습니다.
- libc.a 라이브러리를 비공유 라이브러리로 사용하여 프로그램을 링크하려면 다음 명령을 입력하십시오.
이 명령은 pgm.o를 필수 지원 라이브러리와 링크하고 출력 파일의 이름을 pgm으로 지정합니다. cc 명령의 경우 libc.a 라이브러리는 필수 지원 라이브러리이며 공유 라이브러리로 사용자 프로그램에 링크 편집됩니다. 이 예제에서 -bnso 옵션은 ld 명령이 비공유 라이브러리로 libc.a 라이브러리와 링크하도록 지시하고 -bI:/lib/syscalls.exp 는 커널 또는 /usr/lib/boot/unix 파일에 포함된 시스템 호출 함수를 가져오도록 ld 명령을 지시합니다. -bnso 옵션으로 링크할 때마다, 공유 오브젝트에 반입 및 반출되는(즉, 패스 스루되는) 모든 기호가 이 예에서 -bI:/lib/syscalls.exp에 의해 수행되는 것처럼 명시적으로 반입되어야 합니다.cc -o pgm pgm.o -bnso -bI:/lib/syscalls.exp참고: /usr/lib/libc.a 가 비공유로 링크될 때마다 플래그 -bI:/lib/syscalls.exp 를 사용해야 합니다. 애플리케이션은 또한 운영 체제의 갱신된 릴리스가 설치될 때마다 다시 링크되어야 합니다. 정적으로 링크된 애플리케이션은 수정사항 또는 릴리스 레벨에서 다른 수정사항 또는 릴리스 레벨로 2진이식 가능하지 않습니다. - 무작위 지정 속성을 활성화하려면 다음 명령을 입력합니다:
-baslr텍스트 섹션 재배치가 존재하면 텍스트 및 데이터 랜덤화를 사용으로 설정하지 마십시오.
- 텍스트 및 스택에 대해서만 무작위화를 사용하려면 다음 명령을 입력합니다:
-baslr:ts
파일
| 항목 | 설명 |
|---|---|
| /usr/bin/ld | ld 명령을 포함합니다. |
| /usr/lib/lib*.a | 프로그램 링크에 사용되는 라이브러리를 지정합니다. |
| a.out | 디폴트 출력 파일 이름을 지정합니다. |