이름 ld - GNU 링커 인 LD 사용하기 개요 ld 옵션들 objfile … 기술 ld 여러 객체 및 아카이브 파일을 결합하고 데이터를 재배치하여 심볼 참조를 묶습니다. 보통 프로그램을 컴파일하는 마지막 단계는ld. ld AT & T의 링크 편집기 명령 언어 (Link Editor Command Language) 구문의 상위 집합으로 작성된 링커 명령 언어 (Linker Command Language) 파일을 받아들이고 연결 프로세스를 명확하고 완전하게 제어합니다. 이 맨 페이지는 명령 언어를 설명하지 않습니다. ~을 보아라.ld 명령이나 GNU 링커의 다른 측면에 대한 자세한 내용은 "info"의 항목 또는 매뉴얼 ld : GNU 링커를 참조하십시오. 이 버전의ld 범용 BFD 라이브러리를 사용하여 객체 파일을 조작합니다. 이것은ld COFF 또는 "a.out"과 같이 여러 가지 형식으로 오브젝트 파일을 읽고, 결합하고, 쓰는 것입니다. 사용 가능한 종류의 오브젝트 파일을 생성하기 위해 서로 다른 형식을 함께 연결할 수 있습니다. GNU 링커는 유연성 외에도 다른 링커보다 진단 정보를 제공하는 것이 더 유용합니다. 많은 링커가 오류가 발생하면 즉시 실행을 포기합니다. 언제든지 가능할 때,ld 다른 오류 (또는 경우에 따라 오류에도 불구하고 출력 파일을 가져올 수 있음)를 식별 할 수 있습니다. GNU 링커ld 광범위한 상황을 다루고 가능한 한 다른 링커와 호환되도록하기위한 것입니다. 결과적으로 행동을 제어 할 수있는 선택의 폭이 넓어집니다. 옵션 링커는 많은 명령 줄 옵션을 지원하지만 실제로는 특정 상황에서 거의 사용되지 않습니다. 예를 들어, 자주 사용하는ld 표준 Unix 시스템에 표준 Unix 오브젝트 파일을 링크하는 것입니다. 이러한 시스템에서 "hello.o"파일을 링크하려면 다음을 수행하십시오. LDO /lib/crt0.o hello.o -lc이것은ld 다음과 같은 파일을 생성한다. 산출 "/lib/crt0.o"파일과 "hello.o"파일을 연결하고 "libc.a"라는 라이브러리를 표준 검색 디렉토리에서 가져온 결과입니다. (-엘 옵션을 선택하십시오.) 일부 명령 줄 옵션ld 명령 줄의 어느 지점에서나 지정할 수 있습니다. 그러나 파일을 참조하는 옵션 (예 :-엘 또는-티, 명령 행에 옵션이 나타나는 지점에서 오브젝트 파일 및 기타 파일 옵션과 관련하여 파일을 읽게하십시오. 다른 인수를 사용하여 파일이 아닌 옵션을 반복하면 더 이상 효과가 없거나 이전 옵션 (명령 줄에서 왼쪽에있는 옵션)을 무시합니다. 의미가 두 번 이상 지정 될 수있는 옵션은 아래 설명에 명시되어 있습니다. 옵션이 아닌 인수는 함께 링크 될 오브젝트 파일 또는 아카이브입니다. 이들은 옵션과 인수 사이에 오브젝트 파일 인수를 두지 않을 수 있다는 점을 제외하고는 명령 행 옵션을 따르거나 선행 또는 혼합 할 수 있습니다. 일반적으로 링커는 적어도 하나의 객체 파일을 사용하여 호출되지만, 다른 형식의 이진 입력 파일을 지정할 수 있습니다.-엘, -아르 자형, 그리고 스크립트 명령 언어. 만약 아니 이진 입력 파일이 모두 지정되어 있으면 링커에서 출력을 생성하지 않고 메시지를 표시합니다입력 파일 없음. 링커가 객체 파일의 형식을 인식 할 수없는 경우 링커 스크립트라고 가정합니다. 이 방법으로 지정된 스크립트는 링크에 사용 된 기본 링커 스크립트 (기본 링커 스크립트 또는 다음을 사용하여 지정된 스크립트 중 하나)를 보강합니다.-티). 이 기능을 사용하면 링커가 객체 나 아카이브처럼 보이는 파일을 링크 할 수 있지만 실제로는 일부 심볼 값을 정의하거나 "INPUT"또는 "GROUP"을 사용하여 다른 객체를로드합니다. 이 방법으로 스크립트를 지정하면 주 링커 스크립트가 보강됩니다. 사용-티 옵션을 사용하여 기본 링커 스크립트를 완전히 바꿉니다. 이름이 단일 문자 인 옵션의 경우, 옵션 인수는 공백을 삽입하지 않고 옵션 문자 뒤에 오거나 옵션 문자 바로 뒤에 오는 별도의 인수로 제공되어야합니다. 이름이 여러 글자 인 옵션의 경우 옵션 이름 앞에 대시 또는 두 개를 사용할 수 있습니다. 예를 들어,-trace-symbol 과--trace-symbol 동등하다. 주 -이 규칙에는 한 가지 예외가 있습니다. 소문자 'o'로 시작하는 여러 문자 옵션은 두 개의 대시로 시작될 수 있습니다. 이것은 혼란을 줄이기위한 것입니다.-영형 선택권. 그래서 예를 들어어록 출력 파일 이름을로 설정합니다.마법 이므로어지러운 출력에 NMAGIC 플래그를 설정합니다. 복수 문자 옵션에 대한 인수는 옵션 이름과 등호로 구분하거나 매개 변수를 요구하는 옵션 바로 다음에 별도의 인수로 제공해야합니다. 예를 들어,--trace-symbol foo 과--trace-symbol = foo 동등하다. 여러 글자 옵션의 고유 한 약어가 허용됩니다. 주 - 링커가 간접적으로 호출되는 경우 컴파일러 드라이버 (예 :gcc) 그러면 모든 링커 명령 행 옵션 앞에- 윌, (또는 특정 컴파일러 드라이버에 적합한 것이 무엇이든) 다음과 같이 : gcc -Wl, - startgroup foo.o bar.o -Wl, - endgroup그렇지 않으면 컴파일러 드라이버 프로그램이 자동으로 링커 옵션을 삭제하여 링크가 잘못 될 수 있기 때문에 중요합니다. 다음은 GNU 링커에서 허용하는 일반적인 명령 행 스위치의 표입니다 : -에이 예어 이 옵션은 HP / UX 호환성을 위해 지원됩니다. 그만큼 예어 인수는 문자열 중 하나 여야합니다.아카이브, 공유 된, 또는태만. - 구식의 기능적으로는- 정적, 나머지 두 키워드는 기능적으로 동일한 키워드입니다.- 동적. 이 옵션은 여러 번 사용할 수 있습니다. -에이 건축물 --architecture = 건축물 현재 버전의ld이 옵션은 Intel 960 계열의 아키텍처에서만 유용합니다. 그 안에ld 구성, 건축물 인수는 960 제품군의 특정 아키텍처를 식별하여 몇 가지 안전 장치를 설정하고 아카이브 라이브러리 검색 경로를 수정합니다. 향후 출시 예정ld 다른 아키텍처 제품군에 대해 유사한 기능을 지원할 수 있습니다. -비 입력 형식 - 형식 = 입력 형식 ld 둘 이상의 종류의 오브젝트 파일을 지원하도록 구성 될 수 있습니다. 귀하의ld 이 방법으로 구성하면-비 옵션을 사용하여 명령 행에서이 옵션 뒤에 오는 입력 오브젝트 파일에 대한 2 진 형식을 지정하십시오. 경우에도ld 대체 객체 형식을 지원하도록 구성되어 있으므로 일반적으로이를 지정할 필요가 없습니다.ld 각 컴퓨터에서 가장 일반적인 형식을 기본 입력 형식으로 예상하도록 구성되어야합니다. 입력 형식 텍스트 문자열로, BFD 라이브러리가 지원하는 특정 형식의 이름입니다. (사용 가능한 바이너리 형식을objdump -i.) 비정상적인 바이너리 형식으로 파일을 링크하는 경우이 옵션을 사용할 수 있습니다. 당신은 또한 사용할 수 있습니다-비 (다른 형식의 오브젝트 파일을 링크 할 때) 형식을 명시 적으로 전환하려면 다음을 포함 시키십시오.-비 입력 형식 개체 파일의 각 그룹 앞에 특정 형식으로. 기본 형식은 "GNUTARGET"환경 변수에서 가져옵니다. "TARGET"명령을 사용하여 스크립트에서 입력 형식을 정의 할 수도 있습니다. -기음 MRI- 명령 파일 --mri-script = MRI- 명령 파일 MRI에 의해 생성 된 링커와의 호환성을 위해,ld GNU ld 문서의 MRI 호환 스크립트 파일 섹션에 설명 된 대체, 제한된 명령 언어로 작성된 스크립트 파일을 허용합니다. 옵션으로 MRI 스크립트 파일 소개-기음; 사용-티 범용으로 작성된 링커 스크립트를 실행하는 옵션ld 스크립팅 언어. 만약 MRI-cmdfile 존재하지 않는다,ldany로 지정된 디렉토리에서 찾습니다.-엘 옵션. -디 -dc -dp 이 세 가지 옵션은 동일합니다. 다른 링커와의 호환성을 위해 여러 양식이 지원됩니다. 재배치 가능한 출력 파일이 지정 되더라도 공통 심볼에 공간을 할당합니다 (-아르 자형). 스크립트 명령 "FORCE_COMMON_ALLOCATION"은 동일한 효과를가집니다. -이자형 기입 - 엔트리 = 기입 용도 기입 기본 진입 점 대신 프로그램 실행을 시작하기위한 명시적인 기호로 사용됩니다. 명명 된 기호가없는 경우 기입 링커는 구문 분석을 시도합니다. 기입 번호로 사용하고이를 입력 주소로 사용하십시오 (번호는 기본 10에서 해석되며,0x 16 번베이스, 또는 선두0 기지 8). -이자형 --export-dynamic 동적으로 링크 된 실행 파일을 만들 때 모든 심볼을 동적 심볼 테이블에 추가하십시오. 동적 기호표는 런타임에 동적 개체에서 볼 수있는 기호 집합입니다. 이 옵션을 사용하지 않으면 동적 심볼 테이블에는 일반적으로 링크에 언급 된 일부 동적 객체에서 참조하는 심볼 만 포함됩니다. "dlopen"을 사용하여 다른 동적 객체 대신 프로그램에서 정의한 심볼을 다시 참조해야하는 동적 객체를로드하는 경우 프로그램 자체를 링크 할 때이 옵션을 사용해야 할 수도 있습니다. 또한 버전 스크립트를 사용하여 출력 형식이 지원하는 경우 동적 기호 테이블에 추가 할 기호를 제어 할 수 있습니다. 설명보기--version-script @ ref {VERSION}에 있습니다. -EB 빅 엔디안 객체를 링크합니다. 이것은 기본 출력 형식에 영향을줍니다. -엘자 리틀 엔디안 오브젝트를 연결하십시오. 이것은 기본 출력 형식에 영향을줍니다. -에프 --보조자 이름 ELF 공유 객체를 만들 때 내부 DT_AUXILIARY 필드를 지정된 이름으로 설정합니다. 이것은 공유 객체의 심볼 테이블이 공유 객체의 심볼 테이블에서 보조 필터로 사용되어야한다는 것을 동적 링커에 알려줍니다 이름 . 나중에이 필터 개체에 대해 프로그램을 연결하면 프로그램을 실행할 때 동적 링커에 DT_AUXILIARY 필드가 표시됩니다. 동적 링커가 필터 객체의 심볼을 해석하면 먼저 공유 객체에 정의가 있는지 확인합니다 이름 . 존재하는 경우, 필터 오브젝트의 정의 대신에 사용됩니다. 공유 객체 이름 존재할 필요가 없다. 따라서 공유 객체 이름 디버깅 또는 기계 특정 성능을 위해 특정 기능의 대체 구현을 제공하는 데 사용될 수 있습니다. 이 옵션은 두 번 이상 지정할 수 있습니다. DT_AUXILIARY 항목은 명령 줄에 나타나는 순서대로 만들어집니다. -에프 이름 --필터 이름 ELF 공유 객체를 만들 때 내부 DT_FILTER 필드를 지정된 이름으로 설정합니다. 이것은 생성되는 공유 객체의 심볼 테이블이 공유 객체의 심볼 테이블에 대한 필터로 사용되어야한다는 것을 동적 링커에 알려줍니다 이름 . 나중에이 필터 개체에 대해 프로그램을 연결하면 프로그램을 실행할 때 동적 링커에 DT_FILTER 필드가 표시됩니다. 동적 링커는 평소대로 필터 객체의 심볼 테이블에 따라 심볼을 해석하지만 실제로 공유 객체에있는 정의에 연결됩니다 이름 . 따라서, 필터 객체는 객체에 의해 제공되는 심볼의 서브셋을 선택하는데 사용될 수있다 이름 . 일부 오래된 링커는-에프 옵션을 사용하여 입력 및 출력 오브젝트 파일 모두에 대한 오브젝트 파일 형식을 지정합니다. GNU 링커는이 목적을 위해 다른 메커니즘을 사용합니다 :-비, --체재, - 포맷 옵션, 링커 스크립트의 "TARGET"명령 및 "GNUTARGET"환경 변수가 있습니다. GNU 링커는-에프 ELF 공유 객체를 만들지 않을 때 옵션. - 핀치 이름 ELF 실행 파일이나 공유 객체를 만들 때 DT_FINI를 함수의 주소로 설정하여 실행 가능 객체 나 공유 객체가 언로드 될 때 NAME을 호출하십시오. 기본적으로 링커는 호출 할 함수로 "_fini"를 사용합니다. -지 무시 됨. 다른 도구와의 호환성을 위해 제공됩니다. -지 값 --gpsize = 값 GP 레지스터를 사용하여 최적화 할 개체의 최대 크기를 크기 . 이는 크고 작은 오브젝트를 다른 섹션에 넣을 수있는 MIPS ECOFF와 같은 오브젝트 파일 형식에서만 의미가 있습니다. 다른 오브젝트 파일 형식에서는 무시됩니다. -h 이름 -soname = 이름 ELF 공유 객체를 만들 때 내부 DT_SONAME 필드를 지정된 이름으로 설정하십시오. 실행 파일이 DT_SONAME 필드가있는 공유 객체와 링크되면 실행 파일이 실행될 때 동적 링커는 링커에 지정된 파일 이름을 사용하지 않고 DT_SONAME 필드에 지정된 공유 객체를로드하려고 시도합니다. -나는 증분 링크를 수행하십시오 (옵션과 동일).-아르 자형). - 시작 이름 ELF 실행 파일이나 공유 객체를 만들 때 DT_INIT를 함수의 주소로 설정하여 실행 가능 객체 나 공유 객체가로드 될 때 NAME을 호출하십시오. 기본적으로 링커는 호출 할 함수로 "_init"을 사용합니다. -엘 아카이브 --library = 아카이브 보관 파일 추가 아카이브 링크 할 파일 목록에 추가하십시오. 이 옵션은 여러 번 사용할 수 있습니다.ld "libarchive.a"가 발생했을 때마다 그 경로 목록을 검색합니다. 아카이브 지정된. 공유 라이브러리를 지원하는 시스템에서,ld ".a"이외의 확장자를 가진 라이브러리를 검색 할 수도 있습니다. 특히, ELF 및 SunOS 시스템에서,ld 확장자가 ".a"인 라이브러리를 검색하기 전에 확장자가 ".so"인 라이브러리를 디렉토리에서 검색합니다. 관례 상 ".so"확장자는 공유 라이브러리를 나타냅니다. 링커는 명령 줄에 지정된 위치에서 아카이브를 한 번만 검색합니다. 아카이브가 명령 줄에서 아카이브 앞에 나타나는 일부 객체에서 정의되지 않은 심볼을 정의하면 링커는 아카이브의 해당 파일을 포함합니다. 그러나 명령 줄의 뒷부분에 나타나는 객체에서 정의되지 않은 심볼로 인해 링커에서 아카이브를 다시 검색하지 않습니다. 자세한 내용은-( 옵션을 사용하여 링커가 여러 번 아카이브를 검색하도록 할 수 있습니다. 명령 행에 동일한 아카이브를 여러 번 나열 할 수 있습니다. 이러한 유형의 아카이브 검색은 유닉스 링커에게 표준이다. 그러나 사용중인 경우ld onAIX는 AIX 링커의 동작과 다릅니다. -엘 검색 디렉토리 --library-path = 검색 디렉토리 경로 추가 검색 디렉토리 그 경로 목록에ld 아카이브 라이브러리를 검색하고ld 제어 스크립트. 이 옵션은 여러 번 사용할 수 있습니다. 디렉토리는 명령 행에 지정된 순서대로 검색됩니다. 명령 행에 지정된 디렉토리는 기본 디렉토리보다 먼저 검색됩니다. 모든-엘 옵션은 모두에게 적용됩니다.-엘 옵션의 순서와 관계없이 만약 검색 디렉토리 "="로 시작하면 "="는 시스 루트 접두사 , 링커가 구성 될 때 지정된 경로 검색된 경로의 기본 집합입니다.-엘) 에뮬레이션 모드에 따라 달라집니다ld 일부 경우에는 구성 방법에 대해서도 설명합니다. 경로는 "SEARCH_DIR"명령을 사용하여 링크 스크립트에 지정할 수도 있습니다. 이 방법으로 지정된 디렉토리는 링커 스크립트가 명령 줄에 나타나는 지점에서 검색됩니다. -엠 에뮬레이션 에뮬레이션 에뮬레이션 링커. 사용 가능한 에뮬레이션을--말 수가 많은 또는-V옵션. 만약-엠 옵션이 사용되지 않으면, 에뮬레이션은 "LDEMULATION"환경 변수에서 가져옵니다 (정의 된 경우). 그렇지 않으면 기본 에뮬레이션은 링커가 구성된 방법에 따라 다릅니다. -엠 --print-map 표준 출력에 링크 맵을 인쇄하십시오. 링크 맵은 다음을 포함하여 링크에 대한 정보를 제공합니다. * 오브젝트 파일과 심볼이 메모리에 매핑되는 위치. * 공통 기호가 할당되는 방법. * 링크에 포함 된 모든 아카이브 멤버. 아카이브 멤버가 가져온 심볼을 언급합니다. -엔 --nmagic 가능한 경우 섹션의 페이지 정렬을 해제하고 출력을 "NMAGIC"으로 표시하십시오. -엔 어지러운 텍스트 및 데이터 섹션을 읽고 쓸 수 있도록 설정하십시오. 또한 데이터 세그먼트를 페이지 정렬하지 말고 공유 라이브러리에 대한 링크를 비활성화하십시오. 출력 형식이 유닉스 스타일의 매직 넘버를 지원한다면 출력을 "OMAGIC"으로 표시하십시오. - 아니 - omagic 이 옵션을 사용하면-엔 선택권. 텍스트 섹션을 읽기 전용으로 설정하고 데이터 세그먼트를 페이지에 맞 춥니 다. 주 -이 옵션은 공유 라이브러리에 대한 링크를 활성화하지 않습니다. 용도- 동적 이것 때문에. -영형 산출 - 출력 = 산출 용도 산출 에 의해 생성 된 프로그램의 이름ld; 이 옵션을 지정하지 않으면 이름 a.out 기본적으로 사용됩니다. 스크립트 명령 "OUTPUT"은 출력 파일 이름을 지정할 수도 있습니다. -영형 수평 만약 수평 0보다 큰 숫자 값입니다.ld 출력을 최적화합니다. 이 작업은 상당히 오래 걸릴 수 있으므로 최종 바이너리에서만 활성화해야합니다. -큐 --emit-relocs 재배치 섹션과 내용을 완벽하게 연결된 exececutables에 그대로 두십시오. 실행 파일을 올바르게 수정하려면 게시 링크 분석 및 최적화 도구에이 정보가 필요할 수 있습니다. 결과적으로 실행 파일이 커집니다. 이 옵션은 현재 ELF 플랫폼에서만 지원됩니다. -아르 자형 - relocateable 재배치 가능한 출력을 생성합니다. 즉, 차례대로 입력 파일로 사용할 수있는 출력 파일을 생성합니다.ld. 이것은 종종 부분 연결 . 부수적으로 표준 유닉스 매직 번호를 지원하는 환경에서이 옵션은 출력 파일의 매직 넘버를 "OMAGIC"으로 설정합니다. 이 옵션을 지정하지 않으면 절대 파일이 생성됩니다. C ++ 프로그램을 링크 할 때이 옵션 ~하지 않을 것이다 생성자에 대한 참조를 해결합니다. 그렇게하기 위해서~. 입력 파일의 형식이 출력 파일과 같지 않을 경우 부분 연결은 해당 입력 파일에 재배치가없는 경우에만 지원됩니다. 다른 출력 형식에는 추가 제한이있을 수 있습니다. 예를 들어 일부 "a.out"기반 형식은 다른 형식의 입력 파일과의 부분 연결을 전혀 지원하지 않습니다. 이 옵션은-나는. -아르 자형 파일 이름 --just-symbols = 파일 이름 에서 심볼 이름과 그 주소 읽기 파일 이름 , 재배치하거나 출력에 포함시키지 마십시오. 이렇게하면 출력 파일이 다른 프로그램에 정의 된 메모리의 절대 위치를 상징적으로 참조 할 수 있습니다. 이 옵션을 두 번 이상 사용할 수 있습니다. 다른 ELF 링커와의 호환성을 위해-아르 자형 옵션 다음에는 파일 이름이 아닌 디렉토리 이름이옵니다.-rpath 선택권. -에스 - 스트립 - 모두 출력 파일에서 모든 기호 정보를 생략하십시오. -에스 --strip-debug 출력 파일에서 디버거 기호 정보 (모든 기호가 아님)는 생략하십시오. -티 --자취 입력 파일의 이름을 다음과 같이 인쇄하십시오.ld 그들을 처리합니다. -티 스크립트 파일 --script = 스크립트 파일 용도 스크립트 파일 링커 스크립트로. 이 스크립트는 다음을 대체합니다.ld그것의 기본 링커 스크립트 (그것에 추가하기보다는), 그래서 명령 파일 출력 파일을 설명하는 데 필요한 모든 것을 지정해야합니다. 만약 스크립트 파일 현재 디렉토리에 존재하지 않으면, "ld"는 이전 디렉토리에서 지정된 디렉토리에서 그것을 찾습니다.-엘 옵션. 배수-티 옵션이 누적됩니다. -유 상징 --undefined = 상징 힘 상징 출력 파일에 정의되지 않은 기호로 입력됩니다. 이렇게하면 표준 라이브러리에서 추가 모듈을 연결할 수 있습니다.-유 추가 옵션 기호로 반복하여 정의되지 않은 추가 기호를 입력 할 수 있습니다. 이 옵션은 "EXTERN"링커 스크립트 명령과 동일합니다. ~ C ++ 이외의 프로그램의 경우이 옵션은 다음과 같습니다.-아르 자형: 재배치 가능한 출력을 생성합니다. 즉, 차례대로 입력 파일로 사용할 수있는 출력 파일ld. C ++ 프로그램을 링크 할 때,~ ~하다 달리 생성자에 대한 참조를 해결합니다.-아르 자형. 사용하기에 적합하지 않다.~ 그들과 링크 된 파일들~; 일단 생성자 테이블이 빌드되면 추가 할 수 없습니다. 용도~ 마지막 부분 링크에 대해서만-아르 자형 다른 사람들을 위해서. - 유니크 = 섹션 일치하는 모든 입력 섹션에 대해 별도의 출력 섹션을 만듭니다. 섹션 , 또는 선택적 와일드 카드 섹션 모든 고아 입력 섹션에 대한 인수가 누락되었습니다. 고아 섹션은 링커 스크립트에서 특별히 언급되지 않은 섹션입니다. 명령 행에서이 옵션을 여러 번 사용할 수 있습니다. 링커 스크립트의 출력 섹션 할당을 무시하고 같은 이름을 가진 입력 섹션의 정상적인 병합을 방지합니다. -V --번역 -V 버전 번호 표시ld. 그만큼-V 옵션은 지원되는 에뮬레이션을 나열합니다. -엑스 --discard-all 모든 로컬 기호를 삭제하십시오. -엑스 --discard-locals 모든 임시 지역 기호를 삭제하십시오. 대부분의 타겟에서 이것은 모두 로컬 심볼이며 이름은로 시작합니다.엘. -와이 상징 --trace-symbol = 상징 각 링크 된 파일의 이름을 출력합니다. 상징 나타납니다. 이 옵션은 여러 번 지정할 수 있습니다. 많은 시스템에서 밑줄 문자를 앞에 붙여야합니다. 이 옵션은 링크에 정의되지 않은 기호가 있지만 참조의 출처를 모르는 경우에 유용합니다. -와이 통로 더하다 통로 기본 라이브러리 검색 경로로 이동합니다. 이 옵션은 Solaris 호환성을 위해 존재합니다. -지 예어 인식 된 키워드는 "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc"및 "nocompreloc" ". Solaris 호환성을 위해 다른 키워드는 무시됩니다. "initfirst"는 런타임에 다른 객체보다 먼저 초기화 될 객체를 표시합니다."interpose"는 심볼 테이블이 삽입 된 모든 심볼 앞에 기본 실행 파일을 삽입하고, "loadfltr"은 런타임에 즉시 filtees가 처리되는 객체를 표시합니다. "nodefaultlib"는이 객체의 종속성에 대한 검색이 무시할 객체를 표시합니다 모든 기본 라이브러리 검색 경로. "nodelete"는 객체가 런타임에 언로드되지 않아야 함을 표시합니다. "nodlopen"은 "dlopen"에서 사용할 수없는 객체를 표시합니다. "nodump"마크는 "dldump"에 의해 덤프 될 수 없습니다. "now"는 객체에 비 지연 런타임 바인딩을 표시합니다. "origin"표시에는 객체에 $ ORIGIN이 포함될 수 있습니다. "defs"는 정의되지 않은 기호를 허용하지 않습니다. "muldefs"는 여러 정의를 허용합니다. "combreloc"은 여러 재배치 섹션을 결합하고 정렬하여 동적 심볼 검색 캐싱을 가능하게합니다. "nocombreloc"은 여러 재구성 섹션 결합을 비활성화합니다. "nocopyreloc"는 사본 재배치의 생성을 불가능하게합니다. -( 자료실 -) --start-group 자료실 --end-group 그만큼 자료실 아카이브 파일 목록이어야합니다. 명시적인 파일 이름이거나-엘옵션. 정의되지 않은 참조가 새로 만들지 않을 때까지 지정된 아카이브가 반복적으로 검색됩니다. 일반적으로 아카이브는 명령 줄에 지정된 순서대로 한 번만 검색됩니다. 해당 아카이브의 심볼이 나중에 명령 줄에 나타나는 아카이브에서 객체가 참조하는 정의되지 않은 심볼을 해결해야하는 경우 링커는 해당 참조를 해결할 수 없습니다. 아카이브를 그룹화하여 가능한 모든 참조가 해결 될 때까지 반복적으로 검색합니다. 이 옵션을 사용하면 상당한 성능 비용이 발생합니다. 두 개 이상의 아카이브간에 피할 수없는 순환 참조가있는 경우에만 사용하는 것이 가장 좋습니다. --accept-unknown-input-arch --no-accept-unknown-input-arch 아키텍처를 인식 할 수없는 입력 파일을 링커가 받아들이도록 지시합니다. 사용자는 자신이하고있는 일을 알고 의도적으로 알 수없는 입력 파일에 링크하려고한다고 가정합니다. 릴리스 2.14 이전의 링커의 기본 동작이었습니다. 릴리스 2.14 이후의 기본 동작은 이러한 입력 파일을 거부하는 것입니다.--accept-unknown-input-arch 옵션이 추가되어 이전 동작을 복원합니다. -assert 예어 SunOS와의 호환성을 위해이 옵션은 무시됩니다. - 동적 -dy -call_shared 동적 라이브러리 링크. 이는 공유 라이브러리가 지원되는 플랫폼에서만 의미가 있습니다. 이 옵션은 일반적으로 이러한 플랫폼에서 기본값입니다. 이 옵션의 다른 변형은 다양한 시스템과의 호환성을위한 것입니다. 명령 행에서이 옵션을 여러 번 사용할 수 있습니다 : 라이브러리 검색에 영향을줍니다.-엘 옵션을 따르십시오. -Bgroup 동적 섹션의 'DT_FLAGS_1'항목에 'DF_1_GROUP'플래그를 설정합니다. 이로 인해 런타임 링커는이 객체의 룩업을 처리하고 그 의존성은 그룹 내에서만 수행됩니다.--no-undefined 함축되어 있습니다. 이 옵션은 공유 라이브러리를 지원하는 ELF 플랫폼에서만 의미가 있습니다. - 정적 -dn -non_shared -공전 공유 라이브러리에 링크하지 마십시오. 이는 공유 라이브러리가 지원되는 플랫폼에서만 의미가 있습니다. 이 옵션의 다른 변형은 다양한 시스템과의 호환성을위한 것입니다. 명령 행에서이 옵션을 여러 번 사용할 수 있습니다 : 라이브러리 검색에 영향을줍니다.-엘 옵션을 따르십시오. -Bymbolic 공유 라이브러리를 작성할 때 전역 심볼에 대한 참조를 공유 라이브러리 내의 정의에 바인드하십시오 (있는 경우). 일반적으로 공유 라이브러리에 링크 된 프로그램은 공유 라이브러리 내의 정의를 대체 할 수 있습니다. 이 옵션은 공유 라이브러리를 지원하는 ELF 플랫폼에서만 의미가 있습니다. - 검사 섹션 --no-check-sections 링커에게 묻습니다. 아니 중복 된 주소가 있는지 확인하기 위해 섹션 주소를 확인한 후 일반적으로 링커는이 검사를 수행하고 중복이 발견되면 적절한 오류 메시지를 생성합니다. 링커는 오버레이에서 섹션에 대해 알고 있고 섹션에 대해 여유를 만듭니다. 명령 줄 스위치를 사용하여 기본 동작을 복원 할 수 있습니다.- 검사 섹션. - 참조 상호 참조 테이블을 출력하십시오. 링커 맵 파일이 생성되면 상호 참조 테이블이 맵 파일에 인쇄됩니다. 그렇지 않으면 표준 출력에 인쇄됩니다. 테이블 형식은 의도적으로 단순하므로 필요한 경우 스크립트로 쉽게 처리 할 수 있습니다. 기호는 이름별로 정렬하여 인쇄됩니다. 각 기호에 대해 파일 이름 목록이 제공됩니다. 심볼이 정의 된 경우 첫 번째 파일은 정의의 위치입니다. 나머지 파일에는 기호에 대한 참조가 들어 있습니다. --no-define-common 이 옵션은 공통 기호에 주소 지정을 금지합니다. 스크립트 명령 "INHIBIT_COMMON_ALLOCATION"은 동일한 효과를가집니다. 그만큼--no-define-common 옵션을 사용하면 출력 파일 유형을 선택하여 Common 기호에 주소를 할당하는 결정을 분리 할 수 있습니다. 그렇지 않으면 비 - 재배치 가능 출력 유형은 주소를 공통 기호에 강제로 지정합니다. 사용--no-define-common 공유 라이브러리에서 참조되는 공통 기호에 주 프로그램의 주소 만 할당 할 수 있습니다. 이렇게하면 공유 라이브러리에서 사용되지 않는 중복 공간이 제거되고 런타임 심볼 해석을위한 특수 검색 경로가있는 많은 동적 모듈이있을 때 잘못된 복제본을 해결할 때 발생할 수있는 혼란을 방지 할 수 있습니다. --defsym 상징 = 표현 주어진 절대 주소를 포함하는 출력 파일에 전역 심볼을 만듭니다. 표현 . 이 옵션을 명령 줄에서 여러 기호를 정의하는 데 필요한만큼 여러 번 사용할 수 있습니다. 한정된 형식의 산술 연산이 지원됩니다. 표현 이 컨텍스트에서 16 진수 상수 또는 기존 기호의 이름을 지정하거나 "+"및 "-"를 사용하여 16 진수 상수 또는 기호를 더하거나 뺄 수 있습니다. 보다 정교한 표현식이 필요한 경우 스크립트에서 링커 명령 언어를 사용해보십시오. 노트 : 사이에 공백이 없어야합니다. 상징 , 등호 (``=''), 그리고 표현 . --demangle = 스타일 - 노 demangle 이 옵션은 오류 메시지 및 다른 출력의 기호 이름을 디맨드할지 여부를 제어합니다. 링커가 demangle 명령을 받으면 심볼 이름을 읽을 수있는 방식으로 표시하려고 시도합니다. 오브젝트 파일 형식에 의해 사용되는 경우 맨 앞의 밑줄을 제거하고 C ++로 변환 된 심볼 이름을 사용자가 읽을 수있는 이름으로 변환합니다. 다른 컴파일러는 서로 다른 mangling 스타일을 가지고 있습니다. 선택적 demangling 스타일 인수는 컴파일러에 적합한 디맹 글링 스타일을 선택하는 데 사용할 수 있습니다. 링커는 환경 변수가 아닌 한 기본적으로 demangle합니다.COLLECT_NO_DEMANGLE 설정됩니다. 이 옵션은 기본값을 무시하는 데 사용할 수 있습니다. --dynamic-linker 파일 동적 링커의 이름을 설정하십시오. 이는 동적으로 링크 된 ELF 실행 파일을 생성 할 때만 의미가 있습니다. 기본 동적 링커는 일반적으로 정확합니다. 자신이하는 일을 알지 못하면 이것을 사용하지 마십시오. - embedded-relocs 이 옵션은 -membedded-pic 옵션으로 생성 된 MIPS 내장 PIC 코드를 GNU 컴파일러 및 어셈블러에 연결할 때만 의미가 있습니다. 그것은 링커가 정적으로 초기화 된 데이터를 포인터 값으로 재배치하기 위해 런타임에 사용될 수있는 테이블을 생성하게합니다. 자세한 내용은 testsuite / ld-empic의 코드를 참조하십시오. - 치명적인 경고 모든 경고를 오류로 처리하십시오. --force-exe-suffix 출력 파일의 접미사가 .exe인지 확인하십시오. 성공적으로 빌드 된 완전히 링크 된 출력 파일에 ".exe"또는 ".dll"접미사가 없으면이 옵션은 링커가 출력 파일을 ".exe"접미사가있는 같은 이름으로 복사하도록합니다. 이 옵션은 Microsoft Windows 호스트에서 수정되지 않은 Unix makefile을 사용할 때 유용합니다. 일부 Windows 버전은 ".exe"접미어로 끝나지 않는 한 이미지를 실행하지 않기 때문입니다. --no-gc-sections --gc-sections 사용되지 않는 입력 섹션의 가비지 수집을 활성화합니다. 이 옵션을 지원하지 않는 대상에서는 무시됩니다. 이 옵션은 다음과 호환되지 않습니다.-아르 자형동적 링크와 함께 사용하면 안됩니다. 이 가비지 콜렉션을 수행하지 않는 기본 동작은 다음을 지정하여 복원 할 수 있습니다.--no-gc-sections 명령 줄에서. --도움 명령 행 옵션의 요약을 표준 출력에 인쇄하고 종료하십시오. - 목표 - 도움말 표준 출력에서 모든 대상 특정 옵션의 요약을 인쇄하고 종료하십시오. -지도 지도 파일 파일에 링크 맵을 인쇄하십시오. 지도 파일 . 자세한 설명은-엠 옵션, 위. - 기억하지 마라. ld 일반적으로 입력 파일의 기호 테이블을 메모리에 캐싱하여 메모리 사용 속도를 최적화합니다. 이 옵션은ld 필요한 경우 기호 테이블을 다시 읽음으로써 메모리 사용을 최적화 할 수 있습니다. 다음과 같은 경우에 필요할 수 있습니다.ld 큰 실행 파일을 링크하는 동안 메모리 공간이 부족합니다. --no-undefined -z defs 일반적으로 비 기호 공유 라이브러리를 만들 때 정의되지 않은 기호는 허용되며 런타임 로더가 해결하도록 남겨 둡니다. 이 옵션은 정의되지 않은 기호를 허용하지 않습니다. - 허용 다중 정의 -z muldefs 일반적으로 심볼이 여러 번 정의되면 링커에서 치명적인 오류를보고합니다. 이 옵션은 여러 정의를 허용하며 첫 번째 정의가 사용됩니다. --allow-shlib-undefined --no-undefined가 설정된 경우에도 공유 객체에서 정의되지 않은 심볼을 허용합니다. 결과적으로 일반 객체의 정의되지 않은 심볼은 여전히 오류를 유발하지만 공유 객체의 정의되지 않은 심볼은 무시됩니다. no_undefined의 구현은 런타임 링커가 정의되지 않은 심볼을 숨 깁니다. 그러나 공유 라이브러리의 정의되지 않은 심볼은 커널이로드 할 때 패치하여 현재 아키텍처에 가장 적합한 함수를 선택하기 때문에 적어도 하나의 시스템 (BeOS)이 있습니다. I.E. 동적으로 적절한 memset 함수를 선택하십시오. 분명히 HPPA 공유 라이브러리에는 정의되지 않은 기호가있는 것이 정상입니다. --no-undefined-version 일반적으로 기호에 정의되지 않은 버전이 있으면 링커에서이를 무시합니다. 이 옵션은 버전이 정의되지 않은 심볼을 허용하지 않으며 대신 치명적인 오류가 발생합니다. --no-warn-mismatch 정상적으로ld 다른 프로세서 또는 다른 엔디안에 대해 컴파일 되었기 때문에 어떤 이유로 불일치하는 입력 파일을 함께 연결하려고하면 오류가 발생합니다. 이 옵션은ld 그러한 가능한 오류를 조용히 허용해야합니다. 이 옵션은 링커 오류가 부적절한 지 확인하기 위해 특별한 조치를 취한 경우에만주의해서 사용해야합니다. --no-whole-archive 효과를 끄십시오.- 전체 - 아카이브 후속 아카이브 파일에 대한 옵션. --noinhibit-exec 사용 가능한 경우 실행 가능 출력 파일을 보존하십시오.일반적으로 링크 프로세스 중에 오류가 발생하면 링커에서 출력 파일을 생성하지 않습니다. 오류를 발행 할 때 출력 파일을 쓰지 않고 종료합니다. -nostdlib 명령 행에서 명시 적으로 지정된 라이브러리 디렉토리 만 검색하십시오. 링커 스크립트에 지정된 라이브러리 디렉토리 (명령 행에 지정된 링커 스크립트 포함)는 무시됩니다. - 포맷 출력 형식 ld 둘 이상의 종류의 오브젝트 파일을 지원하도록 구성 될 수 있습니다. 귀하의ld 이 방법으로 구성하면- 포맷 출력 오브젝트 파일의 2 진 형식을 지정하는 옵션. 경우에도ld 대체 객체 형식을 지원하도록 구성되어 있으므로 일반적으로이를 지정할 필요가 없습니다.ld 각 시스템에서 가장 일반적인 형식을 기본 출력 형식으로 생성하도록 구성되어야합니다. 출력 형식 텍스트 문자열로, BFD 라이브러리가 지원하는 특정 형식의 이름입니다. (사용 가능한 바이너리 형식을objdump -i스크립트 명령 "OUTPUT_FORMAT"도 출력 형식을 지정할 수 있지만이 옵션은이를 무시합니다. --qmagic 이 옵션은 Linux 호환성을 위해 무시됩니다. -Qy 이 옵션은 SVR4 호환성을 위해 무시됩니다. --편하게 하다 기계 의존 효과가있는 옵션. 이 옵션은 일부 대상에서만 지원됩니다. 일부 플랫폼에서는--편하게 하다 옵션은 링커가 주소 모드를 완화하고 출력 객체 파일에서 새 명령을 합성하는 등 프로그램에서의 주소 지정을 해결할 때 가능한 전역 최적화를 수행합니다. 일부 플랫폼에서는 이러한 링크를 통해 전역 최적화가 결과 실행 파일의 기호 디버깅을 불가능하게 만들 수 있습니다. 이것은 Matsushita MN10200 및 MN10300 프로세서 제품군의 경우로 알려져 있습니다. 이것이 지원되지 않는 플랫폼에서는,--편하게 하다 수락되지만 무시됩니다. --retain-symbols-file 파일 이름 유지하다 만 파일에 나열된 기호 파일 이름 다른 모든 것을 버리는 것. 파일 이름 한 줄에 하나의 심볼 이름이있는 단순한 파일입니다. 이 옵션은 런타임 메모리를 절약하기 위해 점진적으로 큰 글로벌 심볼 테이블을 축적하는 환경 (VxWorks 등)에서 특히 유용합니다. --retain-symbols-file ~하다 아니 정의되지 않은 기호 또는 재배치에 필요한 기호를 버립니다. 당신은 단지 지정할 수 있습니다--retain-symbols-file 명령 행에서 한 번. 우선 적용-에스 과-에스. -rpath 지시 런타임 라이브러리 검색 경로에 디렉토리를 추가하십시오. ELFexecutable을 공유 객체와 연결할 때 사용됩니다. 모든-rpath 인수는 연결되어 런타임에 공유 객체를 찾기 위해 런타임 링커를 사용하는 런타임 링커에 전달됩니다. 그만큼-rpath 옵션은 링크에 명시 적으로 포함 된 공유 객체가 필요로하는 공유 객체를 찾을 때도 사용됩니다. 그 (것)들의 묘사를보십시오-rpath-link 선택권. 만약-rpath ELF 실행 파일을 링크 할 때 사용되지 않으면 환경 변수 "LD_RUN_PATH"의 내용이 정의 된 경우 사용됩니다. 그만큼-rpath 옵션은 또한 SunOS에서 사용될 수 있습니다. 기본적으로 SunOS에서 링커는 모든 런타임 환경에서 런타임 검색 패치를 구성합니다.-엘 옵션이 주어집니다. 만약-rpath 옵션이 사용되면 런타임 검색 경로는-rpath 옵션을 무시하고-엘옵션. 이것은 gcc를 사용할 때 유용 할 수 있는데, gcc를 추가하면-엘 onNFS 마운트 파일 시스템 일 수있는 옵션. 다른 ELF 링커와의 호환성을 위해-아르 자형 옵션 다음에는 파일 이름이 아닌 디렉토리 이름이옵니다.-rpath 선택권. -rpath-link DIR ELF 또는 SunOS를 사용할 때 하나의 공유 라이브러리가 다른 라이브러리를 요구할 수 있습니다. 이것은 "ld -shared"링크가 공유 라이브러리를 입력 파일 중 하나로 포함 할 때 발생합니다. 링커는 비공유, 비 변동 가능 링크를 수행 할 때 이러한 종속성을 발견하면 명시 적으로 포함되지 않은 경우 필요한 공유 라이브러리를 찾은 다음 링크에 포함하려고 시도합니다. 이 경우,-rpath-link 옵션은 검색 할 첫 x 째 디렉토리 세트를 지정합니다. 그만큼-rpath-link 옵션은 콜론으로 구분 된 이름 목록을 지정하거나 여러 번 나타나는 방식으로 디렉토리 이름 시퀀스를 지정할 수 있습니다. 이 옵션은 공유 라이브러리로 하드 컴파일 된 검색 경로를 겹쳐 쓸 때주의해서 사용해야합니다. 이 경우 런타임 링커가 수행하는 것과 다른 검색 경로를 의도하지 않게 사용할 수 있습니다. 링커는 다음 검색 경로를 사용하여 필수 공유 라이브러리를 찾습니다. 1. 에 의해 지정된 모든 디렉토리-rpath-link 옵션. 2. 에 의해 지정된 모든 디렉토리-rpath 옵션. 차이점-rpath 과-rpath-link 에 의해 지정된 디렉토리입니다.-rpath 옵션은 실행 파일에 포함되며 런타임에 사용됩니다.-rpath-link 옵션은 링크시에만 유효합니다. 네이티브 링커 전용입니다. 3. ELF 시스템에서-rpath 및 "rpath-link"옵션을 사용하지 않으면 환경 변수 "LD_RUN_PATH"의 내용을 검색합니다. 네이티브 링커 전용입니다. 4. SunOS에서-rpath 옵션을 사용하지 않은 경우, 다음을 사용하여 지정된 디렉토리를 검색하십시오.-엘 옵션. 5. 네이티브 링커의 경우, 환경 변수 "LD_LIBRARY_PATH"의 내용. 6. 네이티브 ELF 링커의 경우, 공유 라이브러리의 "DT_RUNPATH"또는 "DT_RPATH"디렉토리에 필요한 공유 라이브러리가 검색됩니다."DT_RUNPATH"항목이 있으면 "DT_RPATH"항목이 무시됩니다. 7. 기본 디렉토리, 일반적으로 / lib 과 / usr / lib . 8. ELF 시스템의 네이티브 링커의 경우, 파일 /etc/ld.so.conf 존재하는 경우, 해당 파일에서 발견 된 디렉토리 목록. 필요한 공유 라이브러리를 찾지 못하면 링커는 경고를 발행하고 링크를 계속 진행합니다. 공유 된 -Bshareable 공유 라이브러리를 만듭니다. 현재 ELF, XCOFF 및 SunOS 플랫폼에서만 지원됩니다. SunOS에서 링커는 공유 라이브러리를 자동으로 생성합니다.-이자형 옵션이 사용되지 않고 링크에 정의되지 않은 기호가 있습니다. --sort-common 이 옵션은ld 일반적인 심볼을 적절한 출력 섹션에 배치 할 때 크기별로 정렬합니다. 먼저 모든 1 바이트 기호를 온 다음 2 바이트 모두를 입력 한 다음 4 바이트를 모두 입력 한 다음 다른 모든 것을 입력하십시오. 이것은 정렬 제약으로 인해 심볼 사이의 갭을 방지하기위한 것입니다. --split-by-file 크기 비슷하다--split-by-reloc 각 입력 파일에 대해 새로운 출력 섹션을 만듭니다. 크기 에 도달했습니다. 크기 주어진 경우 기본값은 1입니다. --split-by-reloc 카운트 파일의 단일 출력 섹션에 둘 이상의 파일이 포함되지 않도록 출력 파일에 추가 섹션을 만들려고합니다. 카운트 재배치. 이는 COFF 객체 파일 형식으로 특정 실시간 커널에 다운로드 할 수있는 큰 재배치 가능 파일을 생성 할 때 유용합니다. COFF는 단일 섹션에서 65535 개 이상의 재배치를 나타낼 수 없으므로 임의의 섹션을 지원하지 않는 오브젝트 파일 형식에서는 작동하지 않습니다. 링커는 재배포를 위해 개별 입력 섹션을 분할하지 않으므로 단일 입력 섹션에 카운트 재배치 하나의 출력 섹션에는 많은 재배치가 포함됩니다. 카운트 기본값은 32768입니다. - 통계 실행 시간 및 메모리 사용량과 같은 링커 작업에 대한 통계를 계산하고 표시합니다. - 전통적 형식 일부 대상의 경우ld 일부 기존 링커의 출력과 다른 점이 있습니다. 이 스위치 요청ld 대신 전통적인 형식을 사용하십시오. 예를 들어, SunOS에서,ld 심볼 열 테이블에 중복 된 항목을 결합합니다. 전체 디버깅 정보가 출력 파일의 크기를 30 % 이상 줄일 수 있습니다. 아쉽게도 SunOS "dbx"프로그램은 결과 프로그램을 읽을 수 없습니다 ( "gdb"는 문제가 없습니다). 그만큼- 전통적 형식 스위치ld 중복 된 항목을 결합하지 마십시오. --section-start 섹션 이름 = 조직 주어진 절대 주소에서 출력 파일의 섹션 찾기 조직 . 이 옵션을 명령 줄에서 여러 섹션을 찾으려면 필요한만큼 여러 번 사용할 수 있습니다. 조직 하나의 16 진 정수 여야합니다. 다른 링커와의 호환성을 위해0x 일반적으로 16 진수 값과 연관됩니다. 노트 : 사이에 공백이 없어야합니다. 섹션 이름 , 등호 (``=''), 그리고 조직 . -Tbss 조직 - 데이터 조직 - 텍스트 조직 용도 조직 출력 파일의 "bss", "data"또는 "text"세그먼트의 시작 주소로 사용됩니다. 조직 하나의 16 진 정수 여야합니다. 다른 링커와의 호환성을 위해0x 일반적으로 16 진수 값과 연관됩니다. --dll-verbose --말 수가 많은 버전 번호 표시ld 지원되는 링커 에뮬레이션을 나열하십시오. 어떤 입력 파일을 열 수 있는지 또는 열 수 없는지를 표시합니다. 링커에서 사용중인 링커 스크립트를 표시합니다. --version-script = 버전 - 스크립트 파일 링커에 대한 버전 스크립트의 이름을 지정하십시오. 일반적으로 공유 라이브러리를 만들 때 생성되는 라이브러리의 버전 계층에 대한 추가 정보를 지정하는 데 사용됩니다. 이 옵션은 공유 라이브러리를 지원하는 ELF 플랫폼에서만 의미가 있습니다. - 워너 - 공통 공통 기호가 다른 공통 기호 또는 기호 정의와 결합 될 때 경고합니다. 유닉스 링커는이 방법이 다소 엉성함을 허용하지만, 다른 운영체제의 링커는 그렇지 않다. 이 옵션을 사용하면 전역 심볼을 조합하여 잠재적 인 문제를 찾을 수 있습니다. 불행히도 일부 C 라이브러리는이 방법을 사용하므로 라이브러리와 프로그램의 심볼에 대한 경고가 표시 될 수 있습니다. 여기에 C 예제로 나타낸 세 가지 종류의 전역 기호가 있습니다. int i = 1; 정의 : 출력 파일의 초기화 된 데이터 섹션에 들어갑니다. extern int i; 공간을 할당하지 않는 정의되지 않은 참조입니다. 변수에 대한 정의 또는 공통 기호가 있어야합니다. int i; 일반적인 기호. 변수에 대해 (하나 이상의) 공통 기호 만 있으면 출력 파일의 초기화되지 않은 데이터 영역으로 이동합니다. 링커는 동일한 변수에 대한 여러 일반 기호를 단일 기호로 병합합니다. 크기가 다른 경우 가장 큰 크기를 선택합니다. 링커는 동일한 변수에 대한 정의가있는 경우 공통 심볼을 선언으로 바꿉니다. 그만큼- 워너 - 공통 옵션은 5 가지 종류의 경고를 생성 할 수 있습니다. 각 경고는 한 쌍의 줄로 구성되어 있습니다. 첫 번째 줄은 방금 만난 기호를 설명하고 두 번째 줄은 같은 이름으로 발견 된 이전 기호를 설명합니다. 두 기호 중 하나 또는 둘 모두가 공통 기호입니다. 1. 심볼에 대한 정의가 이미 있으므로 공통 심볼을 참조로 변환합니다. () : 경고 :정의에 의해 재정의 됨 () : 경고 : 여기에 정의 됨2. 심볼에 대한 나중 정의가 발생하기 때문에 공통 심볼을 참조로 변환합니다. 기호가 다른 순서로 발생한다는 점을 제외하면 앞의 경우와 같습니다. () : 경고 :``'공통점 무시 () : 경고 : 공통점은 여기에있다.3. 공통 심볼을 이전 크기의 공통 심볼과 병합합니다. () : 경고 :``' () : 경고 : 이전 공통점은 여기에 있습니다.4. 공통 심볼을 이전의 더 큰 공통 심볼과 병합합니다. () : 경고 :'큰 공통점으로 우선 함 () : 경고 : 더 큰 공통점은 여기에 있습니다.5. 공통 기호를 이전보다 작은 공통 기호와 병합합니다. 기호가 다른 순서로 발생한다는 점을 제외하면 앞의 경우와 같습니다. () : 경고 :'작은 공통점 무시하기 () : 경고 : 작은 공통점은 여기에 있습니다.--warn-constructors 글로벌 생성자가 사용되는 경우 경고합니다. 이것은 몇 가지 객체 파일 형식에만 유용합니다. COFF 또는 ELF와 같은 형식의 경우 링커에서 전역 생성자를 감지 할 수 없습니다. --warn-multiple-gp 출력 파일에 여러 개의 전역 포인터 값이 필요한 경우 경고합니다. 이것은 알파와 같은 특정 프로세서에서만 의미가 있습니다. 특히, 일부 프로세서는 특수 섹션에 큰 값의 상수를 넣습니다. 특수 레지스터 (전역 포인터)는이 섹션의 중간을 가리키므로 상수는 기본 레지스터 상대 주소 지정 모드를 통해 효율적으로로드 될 수 있습니다. 베이스 - 레지스터 상대 모드에서의 오프셋은 고정되고 상대적으로 작기 때문에 (예를 들어, 16 비트), 이는 상수 풀의 최대 크기를 제한한다. 따라서 큰 프로그램에서는 가능한 모든 상수를 처리 할 수 있도록 여러 개의 전역 포인터 값을 사용해야하는 경우가 종종 있습니다. 이 옵션은이 경우마다 경고를 발행합니다. - 번 - 한 번 정의되지 않은 각 심볼에 대해 한 번만 경고합니다. 모듈을 참조하는 모듈 당 한 번만 경고합니다. --warn-section-align 정렬 때문에 출력 섹션의 주소가 변경되면 경고합니다. 일반적으로 정렬은 입력 섹션에 의해 설정됩니다. 주소는 명시 적으로 지정되지 않은 경우에만 변경됩니다. 즉, "SECTIONS"명령이 섹션의 시작 주소를 지정하지 않은 경우. - 전체 - 아카이브 명령 줄에 언급 된 각 아카이브의 경우- 전체 - 아카이브 옵션을 사용하면 아카이브에 필요한 개체 파일을 검색하는 대신 링크의 아카이브에 모든 개체 파일을 포함시킵니다. 이것은 일반적으로 아카이브 파일을 공유 라이브러리로 변환하여 모든 오브젝트를 결과 공유 라이브러리에 포함시키는 데 사용됩니다. 이 옵션은 두 번 이상 사용될 수 있습니다. gcc에서이 옵션을 사용할 때 두 가지 메모가 있습니다. 첫째, gcc는이 옵션에 대해 알지 못하므로 사용해야합니다.-Wl, -whole-archive. 둘째, 사용하는 것을 잊지 마세요.-Wl, -n-whole-archivegcc가 자신의 링크 목록에 자신의 아카이브 목록을 추가하기 때문에 gcc가이 목록에 영향을 미치기를 원하지 않을 수 있습니다. --덮개 상징 래퍼 함수 사용 상징 . 정의되지 않은 참조 상징 "__ wrap_symbol"로 해석됩니다. "__real_symbol"에 대한 정의되지 않은 참조는 다음으로 해석됩니다. 상징 . 이것은 시스템 기능에 대한 랩퍼를 제공하는 데 사용될 수 있습니다. 래퍼 함수는 "__wrap_symbol"이라고해야합니다. 시스템 기능을 호출하려면 "__ real_symbol"을 호출해야합니다. 다음은 간단한 예입니다. void * __wrap_malloc (int c) {printf ( "% ld와 (과) 호출 된 malloc n", c); return __real_malloc (c); }이 파일을 사용하여 다른 코드를- 포장 malloc, "malloc"에 대한 모든 호출은 대신 "__wrap_malloc"함수를 호출합니다. "__wrap_malloc"에서 "__real_malloc"을 호출하면 실제 "malloc"함수가 호출됩니다. "__real_malloc"함수도 제공하여--덮개 옵션이 성공합니다. 이렇게하면 "__ real_malloc"의 정의를 "__wrap_malloc"과 같은 파일에두면 안됩니다. 그렇게하면 어셈블러에서 링커가 "malloc"에 래핑 할 기회를 갖기 전에 호출을 해결할 수 있습니다. --enable-new-dtags --disable-new-dtags 이 링커는 ELF에서 새 동적 태그를 만들 수 있습니다. 그러나 오래된 ELF 시스템은이를 이해하지 못할 수도 있습니다. 지정한 경우--enable-new-dtags, 필요에 따라 동적 태그가 생성됩니다. 지정한 경우--disable-new-dtags새로운 동적 태그는 생성되지 않습니다. 기본적으로 새로운 동적 태그는 생성되지 않습니다. 이러한 옵션은 ELF 시스템에서만 사용할 수 있습니다. i386 PE 링커는공유 된 옵션을 사용하면 출력을 일반 실행 파일 대신 동적으로 링크 된 라이브러리 (DLL)로 만듭니다. 이 옵션을 사용하면 "* .dll"출력의 이름을 지정해야합니다. 또한 링커는 오브젝트 파일과 같이 링커 명령 행에 지정할 수있는 표준 "* .def"파일을 완벽하게 지원합니다 (사실 심볼을 내보내는 아카이브 앞에 있어야하며 링크가 생성되도록해야합니다. 일반 오브젝트 파일과 동일). 모든 대상에 공통적 인 옵션 외에도 i386 PE 링커는 i386 PE 대상과 관련된 추가 명령 행 옵션을 지원합니다. 값을 취하는 옵션은 공백이나 등호에 의해 값과 분리 될 수 있습니다. --add-stdcall-alias