이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공자에서 실행할 수 있는 i686-linux-gnu-ld 명령입니다.
프로그램:
이름
ld - GNU 링커
개요
ld [옵션] 개체 파일 ...
기술
ld 여러 객체 및 아카이브 파일을 결합하고 데이터를 다시 배치합니다.
심볼 참조를 연결합니다. 일반적으로 컴파일의 마지막 단계는
프로그램을 실행하려면 ld.
ld 상위 집합으로 작성된 링커 명령 언어 파일을 허용합니다.
AT&T의 링크 편집기 명령 언어 구문은 명시적이고
연결 과정에 대한 전면적 통제.
이 매뉴얼 페이지에서는 명령 언어에 대해 설명하지 않습니다. 보다 ld 항목
명령 언어 및 기타 측면에 대한 자세한 내용은 "정보"에서 확인하세요.
GNU 링커의
이 버전의 ld 일반 용도의 BFD 라이브러리를 사용하여 작동합니다.
개체 파일. 이를 통해 ld 개체 파일을 읽고, 결합하고, 쓰려면
다양한 형식으로 제공됩니다. 예를 들어 COFF 또는 "a.out"과 같은 형식이 있습니다.
형식은 서로 연결되어 사용 가능한 모든 종류의 객체를 생성할 수 있습니다.
파일.
GNU 링커는 유연성 외에도 다른 링커보다 더 유용합니다.
진단 정보를 제공하는 링커가 많습니다. 많은 링커가
오류가 발생하면 즉시 실행; 가능한 경우 ld
계속 실행되어 다른 오류를 식별할 수 있습니다(또는 일부
(오류에도 불구하고 출력 파일을 얻기 위해)
GNU 링커 ld 다양한 상황을 포괄하도록 의도되었으며
다른 링커와 최대한 호환되도록 해야 합니다. 결과적으로,
행동을 제어할 수 있는 다양한 선택이 있습니다.
옵션
링커는 다양한 명령줄 옵션을 지원하지만 실제로는
연습해 보세요. 그중 몇 가지는 특정 맥락에서 사용됩니다. 예를 들어,
자주 사용 ld 표준 Unix 객체 파일을 연결하는 것입니다.
표준으로 지원되는 Unix 시스템. 이러한 시스템에서 파일을 링크하려면
"안녕하세요.오":
ld-o /lib/crt0.o hello.o -lc
이것은 말한다 ld 라는 파일을 생성하기 위해 출력 연결의 결과로
"hello.o"와 라이브러리 "libc.a"를 포함하는 "/lib/crt0.o" 파일
표준 검색 디렉토리에서 제공됩니다. (토론 참조)
전에, -l 아래 옵션.)
몇 가지 명령줄 옵션은 ld 언제든지 지정될 수 있습니다
명령줄. 그러나 다음과 같은 파일을 참조하는 옵션은 -l or
-T, 옵션이 나타나는 지점에서 파일을 읽도록 합니다.
명령줄에서 개체 파일 및 기타 파일을 기준으로
옵션. 다른 인수로 파일이 아닌 옵션을 반복하면
더 이상 효과가 없거나 이전 발생 사항을 무시합니다(
해당 옵션의 명령줄에서 더 왼쪽에 있는 옵션입니다.
의미 있게 두 번 이상 지정될 수 있습니다.
아래에 설명이 있습니다.
비옵션 인수는 객체 파일 또는 아카이브입니다.
서로 연결되어 있습니다. 이들은 뒤따르거나 앞서거나 섞일 수 있습니다.
명령줄 옵션은 개체 파일 인수를 제외하고는 사용할 수 없습니다.
옵션과 인수 사이에 배치됩니다.
일반적으로 링커는 최소한 하나의 개체 파일로 호출되지만
다음을 사용하여 다른 형태의 바이너리 입력 파일을 지정할 수 있습니다. -l, -R및
스크립트 명령 언어. 아니 모든 바이너리 입력 파일은
지정된 경우 링커는 출력을 생성하지 않고 다음을 실행합니다.
메시지 아니 입력 파일.
링커가 개체 파일의 형식을 인식할 수 없는 경우
이것이 링커 스크립트라고 가정합니다. 이렇게 지정된 스크립트는
링크에 사용되는 기본 링커 스크립트를 확장합니다(기본
링커 스크립트 또는 다음을 사용하여 지정된 스크립트 -T). 이 기능을 사용하면
링커가 객체 또는
아카이브이지만 실제로는 일부 심볼 값을 정의하거나 사용합니다.
다른 객체를 로드하려면 "INPUT" 또는 "GROUP"을 사용합니다. 이 스크립트에서
방법은 단순히 추가 명령으로 메인 링커 스크립트를 증강합니다.
주요 스크립트 뒤에 배치됨; 사용 -T 기본값을 대체하는 옵션
링커 스크립트를 전체적으로 변경했지만 "INSERT" 명령의 효과에 주목하세요.
이름이 단일 문자인 옵션의 경우 옵션 인수는 다음과 같아야 합니다.
공백 없이 옵션 문자를 따르거나
옵션 바로 뒤에 별도의 인수로 제공됩니다.
필요합니다.
이름이 여러 글자인 옵션의 경우 대시 1개 또는 2개
옵션 이름 앞에 올 수 있습니다. 예를 들어, -추적 기호 그리고
--추적 기호 동등합니다. 참고---이것에는 한 가지 예외가 있습니다.
규칙. 소문자 'o'로 시작하는 여러 문자 옵션은
앞에는 대시 두 개만 있어야 합니다. 이는 혼동을 줄이기 위한 것입니다.
-o 옵션입니다. 예를 들어 -마법 출력 파일 이름을 다음으로 설정합니다. 마법
이므로 --오매직 출력에 NMAGIC 플래그를 설정합니다.
다중 문자 옵션에 대한 인수는 다음과 분리되어야 합니다.
옵션 이름을 등호로 지정하거나 별도의 인수로 지정할 수 있습니다.
해당 옵션을 요구하는 옵션 바로 다음에 표시됩니다. 예를 들어,
--추적 기호 푸 그리고 --추적 기호=foo 동등합니다. 고유합니다.
여러 글자로 구성된 옵션의 이름을 약어로도 사용할 수 있습니다.
참고---링커가 컴파일러 드라이버를 통해 간접적으로 호출되는 경우
(예 : GCC) 그런 다음 모든 링커 명령줄 옵션을 접두사로 지정해야 합니다.
by -NS, (또는 특정 컴파일러 드라이버에 적합한 것)
이렇게 :
gcc -Wl,--시작-그룹 foo.o bar.o -Wl,--end-group
이것은 중요합니다. 그렇지 않으면 컴파일러 드라이버 프로그램이
링커 옵션을 자동으로 삭제하여 잘못된 링크가 발생합니다. 혼란스럽습니다.
값을 요구하는 옵션을 전달할 때도 발생할 수 있습니다.
드라이버는 옵션과 인수 사이에 공백을 사용하면 다음과 같은 역할을 합니다.
구분 기호를 사용하면 드라이버가 링커에 옵션만 전달합니다.
그리고 컴파일러에 대한 인수입니다. 이 경우 사용하는 것이 가장 간단합니다.
다음과 같은 단일 및 다중 문자 옵션의 결합된 형태:
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
다음은 허용되는 일반 명령줄 스위치 표입니다.
GNU 링커:
@파일
다음에서 명령줄 옵션 읽기 파일. 읽은 옵션이 삽입됩니다.
원래 @ 대신파일 옵션. 만약에 파일 존재하지 않거나
읽을 수 없는 경우 옵션은 문자 그대로 처리되며
제거되었습니다.
옵션 파일 공백으로 구분됩니다. 공백
문자는 전체를 둘러싸서 옵션에 포함될 수 있습니다.
작은따옴표나 큰따옴표로 묶인 옵션입니다. 모든 문자(포함
백슬래시)는 문자를 접두사로 추가하여 포함할 수 있습니다.
백슬래시와 함께 포함됩니다. NS 파일 자체적으로 추가 포함할 수 있습니다
@파일 옵션; 이러한 옵션은 재귀적으로 처리됩니다.
-a 키워드는
이 옵션은 HP/UX 호환성을 위해 지원됩니다. NS 키워드는
인수는 문자열 중 하나여야 합니다. 아카이브, 공유및 디폴트 값.
-아카이브 기능적으로 다음과 같습니다. -비정적, 그리고 나머지 두 개
키워드는 기능적으로 동일합니다 -비다이나믹. 이 옵션은
몇 번이든 사용할 수 있습니다.
--심사 감사합니다
추가 감사합니다 동적 섹션의 "DT_AUDIT" 항목으로 이동합니다.
감사합니다 존재 여부가 확인되지 않으며 사용하지도 않습니다.
라이브러리에 지정된 DT_SONAME입니다. 여러 번 지정된 경우
"DT_AUDIT"에는 콜론으로 구분된 감사 인터페이스 목록이 포함됩니다.
사용하려면. 링커가 감사 항목이 있는 객체를 찾으면
공유 라이브러리를 검색하면 해당 라이브러리가 추가됩니다.
출력 파일의 "DT_DEPAUDIT" 항목입니다. 이 옵션은
rtld-audit 인터페이스를 지원하는 ELF 플랫폼에서 의미가 있습니다.
-A 아키텍처
--아키텍처=아키텍처
현재 릴리스에서는 ld, 이 옵션은 다음에만 유용합니다.
인텔 960 아키텍처 제품군. ld 구성,
아키텍처 인수는 특정 아키텍처를 식별합니다.
960 제품군은 일부 보호 기능을 활성화하고 보관을 수정합니다.
도서관 검색 경로.
향후 릴리스 ld 다른 것에 대해서도 유사한 기능을 지원할 수 있습니다
건축 계열.
-b 입력 형식
--형식=입력 형식
ld 여러 종류의 개체 파일을 지원하도록 구성될 수 있습니다.
귀하의 경우 ld 이렇게 구성하면 다음을 사용할 수 있습니다. -b ~에 대한 옵션
다음에 오는 입력 개체 파일에 대한 이진 형식을 지정합니다.
명령줄에서 옵션을 사용할 수도 있습니다. ld 지원하도록 구성됨
대체 개체 형식의 경우 일반적으로 이를 지정할 필요가 없습니다.
as ld 기본 입력 형식으로 예상되도록 구성되어야 합니다.
각 기계에서 가장 일반적인 형식입니다. 입력 형식 는 텍스트 문자열이며,
BFD 라이브러리가 지원하는 특정 형식의 이름입니다.
(사용 가능한 바이너리 형식을 나열할 수 있습니다. 객체 덤프 -i.)
파일을 연결하는 경우 이 옵션을 사용할 수 있습니다.
특이한 이진 형식입니다. 또한 다음을 사용할 수 있습니다. -b 형식을 전환하려면
명시적으로(다른 형식의 개체 파일을 연결할 때)
웹사이트 통합을 원활하게 구현해드립니다. -b 입력 형식 각 객체 파일 그룹 전에
특정 형식.
기본 형식은 환경 변수에서 가져옵니다.
"그누타겟".
스크립트에서 입력 형식을 정의하려면 다음을 사용할 수도 있습니다.
명령 "TARGET";
-c MRI 명령 파일
--mri 스크립트=MRI 명령 파일
MRI로 생성된 링커와의 호환성을 위해, ld 스크립트를 수락합니다
대체적이고 제한된 명령 언어로 작성된 파일
GNU ld의 MRI 호환 스크립트 파일 섹션에 설명되어 있습니다.
문서화. MRI 스크립트 파일을 옵션으로 소개합니다. -c; 사용하다
전에, -T 범용으로 작성된 링커 스크립트를 실행하는 옵션
ld 스크립팅 언어. MRI cmdfile 존재하지 않는다, ld 찾다
지정된 디렉토리에 있습니다. -L 옵션을 제공합니다.
-d
-dc
-dp 이 세 가지 옵션은 동등하며 여러 형식이 지원됩니다.
다른 링커와의 호환성을 위해 공통 영역에 공간을 할당합니다.
재배치 가능한 출력 파일이 지정된 경우에도 기호가 표시됩니다. -r).
스크립트 명령 "FORCE_COMMON_ALLOCATION"은 동일한 효과를 갖습니다.
--deaudit 감사합니다
-P 감사합니다
추가 감사합니다 동적 섹션의 "DT_DEPAUDIT" 항목으로 이동합니다.
감사합니다 존재 여부가 확인되지 않으며 사용하지도 않습니다.
라이브러리에 지정된 DT_SONAME입니다. 여러 번 지정된 경우
"DT_DEPAUDIT"에는 콜론으로 구분된 감사 목록이 포함됩니다.
사용할 인터페이스입니다. 이 옵션은 ELF 플랫폼에서만 유효합니다.
rtld-audit 인터페이스를 지원합니다. -P 옵션이 제공됩니다.
Solaris 호환성.
-e 항목
--항목=항목
항목 실행 시작을 위한 명시적 기호로서
기본 진입점이 아닌 프로그램입니다.
명명된 기호 항목, 링커는 구문 분석을 시도합니다. 항목 숫자로서,
그리고 그것을 진입 주소로 사용합니다(번호는 해석됩니다)
10진법으로; 선행을 사용할 수 있습니다 0x 16진법 또는 선행 0
(8진법의 경우)
--제외-libs lib,lib, ...
심볼이 포함되어서는 안 되는 아카이브 라이브러리 목록을 지정합니다.
자동으로 내보내집니다. 라이브러리 이름은 다음으로 구분될 수 있습니다.
쉼표 또는 콜론을 사용할 수 없습니다. "--exclude-libs ALL"을 지정하면 기호가 제외됩니다.
자동 내보내기를 통해 모든 아카이브 라이브러리에서. 이 옵션은
링커의 i386 PE 대상 포트에만 사용 가능
ELF 대상 포트. i386 PE의 경우, 명시적으로 나열된 기호
이 옵션과 관계없이 .def 파일은 계속 내보내집니다. ELF의 경우
대상 포트, 이 옵션의 영향을 받는 심볼은 다음과 같이 처리됩니다.
숨겨진.
--implib에 대한 모듈 제외 모듈,모듈, ...
개체 파일 또는 아카이브 멤버 목록을 지정합니다.
기호는 자동으로 내보내지지 않아야 하지만
생성되는 가져오기 라이브러리에 도매로 복사됨
링크. 모듈 이름은 쉼표나 콜론으로 구분할 수 있습니다.
사용된 파일 이름과 정확히 일치해야 합니다. ld 파일을 열려면;
아카이브 멤버의 경우 이는 단순히 멤버 이름이지만 객체의 경우
파일 이름은 나열되어 있어야 하며 정확히 모든 경로를 포함하고 일치해야 합니다.
링커 명령줄에서 입력 파일을 지정하는 데 사용됩니다.
옵션은 i386 PE 대상 포트에만 사용할 수 있습니다.
링커. .def 파일에 명시적으로 나열된 기호는 여전히
이 옵션과 관계없이 내보내집니다.
-E
--내보내기-동적
--내보내기-동적 없음
동적으로 링크된 실행 파일을 생성할 때, -E option
또는 --내보내기-동적 이 옵션을 사용하면 링커가 모든 심볼을 추가합니다.
동적 심볼 테이블에. 동적 심볼 테이블은 다음과 같습니다.
런타임에 동적 객체에서 볼 수 있는 기호입니다.
이 옵션 중 하나를 사용하지 않거나
--내보내기-동적 없음 기본 동작을 복원하는 옵션)
동적 심볼 테이블에는 일반적으로 다음과 같은 심볼만 포함됩니다.
링크에 언급된 일부 동적 객체에 의해 참조됩니다.
"dlopen"을 사용하여 참조해야 하는 동적 객체를 로드하는 경우
다른 것이 아닌 프로그램에서 정의한 기호로 돌아가기
동적 개체의 경우 이 옵션을 사용해야 할 가능성이 높습니다.
프로그램 자체를 연결합니다.
동적 목록을 사용하여 어떤 기호가 표시되어야 하는지 제어할 수도 있습니다.
출력 형식이 지원하면 동적 심볼 테이블에 추가됩니다.
에 대한 설명을 참조하십시오. --동적 목록.
이 옵션은 ELF 대상 포트에만 적용됩니다. PE
대상은 DLL에서 모든 심볼을 내보내는 유사한 기능을 지원합니다.
또는 EXE; 설명을 참조하세요 --내보내기-모든 기호 아래.
-EB 빅 엔디안 개체를 연결합니다. 이는 기본 출력 형식에 영향을 줍니다.
-엘자 리틀 엔디안 객체를 연결합니다. 이는 기본 출력에 영향을 미칩니다.
형식입니다.
-f name
--보조=name
ELF 공유 객체를 생성할 때 내부 DT_AUXILIARY를 설정합니다.
지정된 이름으로 필드를 변경합니다. 이는 동적 링커에 다음을 알려줍니다.
공유 객체의 심볼 테이블은 다음과 같이 사용해야 합니다.
공유 객체의 심볼 테이블에 대한 보조 필터 name.
나중에 이 필터 객체에 대해 프로그램을 연결하면,
프로그램을 실행하면 동적 링커가 DT_AUXILIARY를 볼 것입니다.
필드. 동적 링커가 필터에서 모든 심볼을 확인하는 경우
객체의 경우 먼저 정의가 있는지 확인합니다.
공유 객체 name. 만약 있다면, 그것이 대신 사용될 것입니다.
필터 객체의 정의. 공유 객체 name 필요한 것
존재하지 않습니다. 따라서 공유 객체 name 제공하는 데 사용될 수 있습니다
특정 기능의 대체 구현, 아마도
디버깅이나 특정 장비의 성능을 위해서입니다.
이 옵션은 여러 번 지정할 수 있습니다. DT_AUXILIARY
항목은 나타나는 순서대로 생성됩니다.
명령 행.
-F name
--필터=name
ELF 공유 객체를 생성할 때 내부 DT_FILTER를 설정합니다.
지정된 이름으로 필드를 변경합니다. 이는 동적 링커에 다음을 알려줍니다.
생성되는 공유 객체의 심볼 테이블은 다음과 같아야 합니다.
공유 객체의 심볼 테이블에 대한 필터로 사용됨 name.
나중에 이 필터 객체에 대해 프로그램을 연결하면,
프로그램을 실행하면 동적 링커가 DT_FILTER를 볼 것입니다.
필드. 동적 링커는 다음에 따라 심볼을 확인합니다.
필터 객체의 심볼 테이블은 평소와 같지만 실제로는
공유 객체에서 발견된 정의에 대한 링크 name. 그래서
필터 객체는 심볼의 하위 집합을 선택하는 데 사용할 수 있습니다.
객체에 의해 제공됨 name.
일부 오래된 링커는 다음을 사용했습니다. -F 컴파일 전반에 걸친 옵션
입력 및 출력 모두에 대한 객체 파일 형식을 지정하기 위한 툴체인
출력 객체 파일. GNU 링커는 이를 위해 다른 메커니즘을 사용합니다.
목적: -b, --체재, --o형식 옵션, "TARGET" 명령
링커 스크립트와 "GNUTARGET" 환경 변수에서.
GNU 링커는 다음을 무시합니다. -F ELF를 생성하지 않을 때의 옵션
공유 객체.
-피니=name
ELF 실행 파일이나 공유 객체를 생성할 때 NAME을 호출합니다.
DT_FINI를 설정하여 실행 가능 객체나 공유 객체가 언로드됩니다.
함수 주소입니다. 기본적으로 링커는 "_fini"를 사용합니다.
호출할 함수로.
-g 무시됨. 다른 도구와의 호환성을 위해 제공됩니다.
-G 가치
--gp크기=가치
GP를 사용하여 최적화할 객체의 최대 크기를 설정합니다.
등록하다 크기. 이것은 객체 파일 형식에만 의미가 있습니다.
대형 및 소형 물체를 넣을 수 있는 MIPS ELF와 같은
다른 섹션. 다른 객체 파일 형식에서는 무시됩니다.
-h name
-이름=name
ELF 공유 객체를 생성할 때 내부 DT_SONAME을 설정합니다.
지정된 이름으로 필드. 실행 파일이 다음과 연결되면
DT_SONAME 필드가 있는 공유 객체의 경우 실행 파일이
동적 링커가 실행되면 공유 객체를 로드하려고 시도합니다.
파일을 사용하는 대신 DT_SONAME 필드로 지정됨
링커에 주어진 이름.
-i 증분 링크 수행(옵션과 동일 -r).
-초기화=name
ELF 실행 파일이나 공유 객체를 생성할 때 NAME을 호출합니다.
실행 파일이나 공유 객체는 DT_INIT을 설정하여 로드됩니다.
함수의 주소입니다. 기본적으로 링커는 "_init"을 사용합니다.
호출할 함수로.
-l 이름 사양
--라이브러리=이름 사양
다음으로 지정된 아카이브 또는 개체 파일을 추가합니다. 이름 사양 목록에
연결할 파일입니다. 이 옵션은 여러 번 사용할 수 있습니다.
이름 사양 형식이다 :파일 이름, ld 라이브러리 경로를 검색합니다
라는 파일에 대해 파일 이름그렇지 않으면 라이브러리를 검색합니다.
라는 파일의 경로 libnamespec.a.
공유 라이브러리를 지원하는 시스템에서 ld 또한 검색할 수도 있습니다
이외의 파일 libnamespec.a특히 ELF와 SunOS에 대해
시스템, ld 라이브러리라는 디렉토리를 검색합니다.
libnamespec.so 라는 이름을 검색하기 전에 libnamespec.a. (에 의해
관례상 ".so" 확장자는 공유 라이브러리를 나타냅니다.) 참고
이 동작은 적용되지 않습니다 :파일 이름, 항상
라는 파일을 지정합니다 파일 이름.
링커는 아카이브를 해당 위치에서 한 번만 검색합니다.
명령줄에 지정됩니다. 아카이브가 다음을 정의하는 경우
이전에 나타난 어떤 객체에서 정의되지 않은 기호
명령줄에 아카이브를 추가하면 링커가 다음을 포함합니다.
아카이브에서 적절한 파일을 가져옵니다. 그러나 정의되지 않은 기호
명령줄에 나중에 나타나는 객체에서는 발생하지 않습니다.
링커를 사용하여 아카이브를 다시 검색합니다.
을 참조 -( 링커가 아카이브를 검색하도록 강제하는 방법에 대한 옵션
여러 번.
명령줄에 동일한 아카이브를 여러 번 나열할 수 있습니다.
이러한 유형의 아카이브 검색은 Unix 링커의 표준입니다.
그러나 사용중인 경우 ld AIX에서는 다음과 다르다는 점에 유의하세요.
AIX 링커의 동작.
-L 검색 디렉토리
--라이브러리 경로=검색 디렉토리
경로 추가 검색 디렉토리 경로 목록에 ld 검색할 것이다
보관 도서관 및 ld 제어 스크립트. 이 옵션을 사용할 수 있습니다.
여러 번. 디렉토리는 순서대로 검색됩니다.
명령줄에 지정됩니다. 디렉토리
명령줄에 지정된 항목은 기본값보다 먼저 검색됩니다.
디렉토리. 모두 -L 옵션은 모두에 적용됩니다. -l 옵션에 관계없이
옵션이 나타나는 순서. -L 옵션은 영향을 미치지 않습니다
방법 ld 다음을 제외하고 링커 스크립트를 검색합니다. -T 옵션이 지정되었습니다.
If 검색 디렉토리 "="로 시작하면 "="가
시스템 루트 접두사에 의해 제어 --sysroot 옵션 또는 지정됨
링커가 구성될 때.
검색된 기본 경로 세트(다음으로 지정되지 않음) -L)
에뮬레이션 모드에 따라 다릅니다 ld 사용 중이며, 어떤 경우에는 또한
구성 방법에 대한 내용입니다.
경로는 링크 스크립트에서도 지정할 수 있습니다.
"SEARCH_DIR" 명령. 이 방법으로 지정된 디렉터리를 검색합니다.
링커 스크립트가 명령에 나타나는 지점에서
줄입니다.
-m 에뮬레이션
에뮬레이트 에뮬레이션 링커. 사용 가능한 항목을 나열할 수 있습니다.
에뮬레이션 --말 수가 많은 or -V 옵션을 제공합니다.
경우 -m 옵션이 사용되지 않으면 에뮬레이션이 다음에서 가져옵니다.
"LDEMULATION" 환경 변수가 정의된 경우.
그렇지 않으면 기본 에뮬레이션은 링커가 어떻게 되었는지에 따라 달라집니다.
구성되었습니다.
-M
--인쇄-지도
표준 출력에 링크 맵을 인쇄합니다. 링크 맵은 다음을 제공합니다.
다음을 포함한 링크에 대한 정보:
· 개체 파일이 메모리에 매핑되는 위치.
· 공통 기호가 할당되는 방법.
· 링크에 포함된 모든 아카이브 멤버는 다음을 언급합니다.
보관소 회원을 불러들인 상징.
· 기호에 할당된 값.
참고 - 표현식에 의해 값이 계산되는 기호
동일한 기호의 이전 값에 대한 참조가 포함될 수 있습니다.
링크 맵에 올바른 결과가 표시되지 않습니다.
링커가 중간 결과를 삭제하고
표현식의 최종 값을 유지합니다. 이러한 경우
상황에 따라 링커는 포함된 최종 값을 표시합니다.
대괄호로 묶습니다. 예를 들어 링커 스크립트는
포함 :
푸 = 1
푸 = 푸 * 4
푸 = 푸 + 8
다음과 같은 출력이 링크 맵에 생성됩니다. -M
옵션이 사용됩니다:
0x00000001 푸 = 0x1
[0x0000000c] 푸 = (푸 * 0x4)
[0x0000000c] 푸 = (푸 + 0x8)
식 표현식에 대한 자세한 내용은
링커 스크립트.
-n
--nmagic
섹션의 페이지 정렬을 끄고 링크를 비활성화합니다.
공유 라이브러리. 출력 형식이 Unix 스타일 매직을 지원하는 경우
숫자의 경우 출력을 "NMAGIC"으로 표시합니다.
-N
--오매직
텍스트 및 데이터 섹션을 읽고 쓸 수 있도록 설정합니다. 또한,
데이터 세그먼트를 페이지 정렬하지 말고 링크를 비활성화하세요.
공유 라이브러리. 출력 형식이 Unix 스타일 매직을 지원하는 경우
숫자의 경우 출력을 "OMAGIC"으로 표시하세요. 참고: 쓰기 가능한
PE-COFF 대상에 대해 텍스트 섹션이 허용되며 이는 다음을 준수하지 않습니다.
Microsoft에서 발표한 형식 사양입니다.
--마법이 아닌
이 옵션은 대부분의 효과를 무효화합니다. -N 옵션입니다. 설정합니다
텍스트 섹션을 읽기 전용으로 설정하고 데이터 세그먼트를 강제로 설정합니다.
페이지 정렬. 참고 - 이 옵션은 링크를 활성화하지 않습니다.
공유 라이브러리. 사용 -비다이나믹 이합니다.
-o 출력
--출력=출력
출력 에서 만든 프로그램의 이름으로 ld; 이 경우
옵션이 지정되지 않으면 이름 아웃 기본적으로 사용됩니다. NS
스크립트 명령 "OUTPUT"은 출력 파일 이름을 지정할 수도 있습니다.
-O 수평
If 수평 XNUMX보다 큰 숫자 값입니다. ld 최적화합니다
출력. 이 작업에는 훨씬 더 오랜 시간이 걸릴 수 있으므로
아마도 최종 바이너리에만 활성화되어야 할 것입니다.
현재 이 옵션은 ELF 공유 라이브러리 생성에만 영향을 미칩니다.
링커의 향후 릴리스에서는 이 옵션을 더 많이 활용할 수 있습니다.
또한 현재 링커의 동작에는 차이가 없습니다.
이 옵션의 0이 아닌 다른 값. 이 역시 변경될 수 있습니다.
향후 출시 예정.
--푸시 상태
The --푸시 상태 플래그의 현재 상태를 보존할 수 있습니다
입력 파일 처리를 제어하여 모두 처리할 수 있도록 합니다.
해당되는 하나로 복원됨 --팝 상태 옵션을 선택합니다.
적용되는 옵션은 다음과 같습니다. -비다이나믹, -비정적, -NS, -디,
-통화_공유, -비공유, -공전, -N, -n, --전체 아카이브,
--전체 아카이브 없음, -r, -우르, --copy-dt-필요한 항목,
--no-copy-dt-필요한 항목, --필요에 따라, --필요에 따라 없음및 -a.
이 옵션의 한 대상은 다음 사양입니다. 패키지 구성. 언제
와 함께 사용 --libs 옵션은 가능한 모든 필요한 라이브러리입니다.
나열되어 있고 항상 연결되어 있을 수 있습니다.
다음과 같이 반환합니다.
-Wl,--push-state,--필요에 따라 -libone -libtwo -Wl,--pop-state
--push-state의 효과를 취소하고 이전 값을 복원합니다.
입력 파일 처리를 제어하는 플래그입니다.
-q
--방출 재배치
완전히 링크된 실행 파일에 재배치 섹션과 내용을 남겨 둡니다.
게시물 링크 분석 및 최적화 도구에 이 정보가 필요할 수 있습니다.
실행 파일의 올바른 수정을 수행하기 위해.
더 큰 실행 파일이 생성됩니다.
이 옵션은 현재 ELF 플랫폼에서만 지원됩니다.
--힘-동적
출력 파일에 동적 섹션을 강제로 적용합니다. 이 옵션은
VxWorks 타겟에만 해당됩니다.
-r
-- 재배치 가능
재배치 가능한 출력 생성 - 즉, 출력 파일 생성
차례로 입력으로 사용될 수 있습니다 ld. 이것은 흔히 일부의
연결. 부작용으로 표준을 지원하는 환경에서
Unix 매직 넘버, 이 옵션은 출력 파일의 매직 넘버도 설정합니다.
"OMAGIC"에 대한 번호입니다. 이 옵션을 지정하지 않으면 절대
파일이 생성됩니다. C++ 프로그램을 링크할 때 이 옵션은 결제 게이트웨이, 지원
생성자에 대한 참조를 해결하려면 다음을 사용하세요. -우르.
입력 파일의 형식이 출력 파일과 동일하지 않은 경우
파일, 부분 링크는 해당 입력 파일이 아닌 경우에만 지원됩니다.
재배치를 포함할 수 있습니다. 다른 출력 형식은 추가 정보를 가질 수 있습니다.
제한 사항; 예를 들어 일부 "a.out" 기반 형식은 지원하지 않습니다.
다른 형식의 입력 파일과의 부분적 링크가 전혀 불가능합니다.
이 옵션은 다음과 동일한 작업을 수행합니다. -i.
-R 파일 이름
--그냥 기호=파일 이름
다음에서 기호 이름과 주소 읽기 파일 이름, 하지만 하지마
위치를 변경하거나 출력에 포함합니다. 이렇게 하면 출력이 가능합니다.
메모리의 절대 위치를 상징적으로 참조하는 파일
다른 프로그램에서는 이 옵션을 여러 번 사용할 수 있습니다.
다른 ELF 링커와의 호환성을 위해 -R 옵션은
파일 이름이 아닌 디렉토리 이름이 뒤에 붙는 경우
로 취급됨 -rpath 옵션을 선택합니다.
-s
-모든 스트립
출력 파일에서 모든 기호 정보를 생략합니다.
-S
--스트립-디버그
디버거 심볼 정보(모든 심볼은 아님)를 생략합니다.
결과물 파일.
-t
--추적하다
입력 파일의 이름을 다음과 같이 인쇄하십시오. ld 처리합니다.
-T 스크립트 파일
--스크립트=스크립트 파일
스크립트 파일 링커 스크립트로. 이 스크립트는 다음을 대체합니다. ld's
기본 링커 스크립트(추가하는 것이 아니라)이므로 명령 파일
출력 파일을 설명하는 데 필요한 모든 것을 지정해야 합니다.
If 스크립트 파일 현재 디렉토리에 존재하지 않습니다. "ld"가 보입니다.
이전에 지정된 디렉토리에 대해 -L 옵션을 제공합니다.
배수 -T 옵션이 누적됩니다.
-dT 스크립트 파일
--기본 스크립트=스크립트 파일
스크립트 파일 기본 링커 스크립트로.
이 옵션은 다음과 유사합니다. --스크립트 그 외에는 옵션
스크립트 처리가 나머지 작업이 끝날 때까지 지연됩니다.
명령줄이 처리되었습니다. 이를 통해 뒤에 옵션을 배치할 수 있습니다.
전에, --기본 스크립트 영향을 미치는 명령줄의 옵션
링커 스크립트의 동작은 다음과 같은 경우에 중요할 수 있습니다.
링커 명령줄은 사용자가 직접 제어할 수 없습니다. (예:
명령줄이 다른 도구에 의해 구성되고 있기 때문에
as GCC).
-u 상징
--정의되지 않음=상징
힘 상징 출력 파일에 정의되지 않은 값으로 입력됩니다.
기호. 이렇게 하면 예를 들어 추가 링크가 트리거될 수 있습니다.
표준 라이브러리의 모듈. -u 다른 방법으로 반복될 수 있습니다
추가 정의되지 않은 기호를 입력하기 위한 옵션 인수입니다.
옵션은 "EXTERN" 링커 스크립트 명령과 동일합니다.
이 옵션을 사용하여 추가 모듈을 강제로 설치하려는 경우
링크로 끌어들여지고 심볼에 오류가 있는 경우
정의되지 않은 상태로 유지되면 옵션 --필수 정의 사용되어야한다
대신.
--require 정의=상징
을 요구한다 상징 출력 파일에 정의되어 있습니다. 이 옵션은
옵션과 동일 --찾으시는 주소가 없습니다 경우를 제외하고 상징 정의되지 않음
출력 파일에 이 내용이 있으면 링커에서 오류가 발생하고 종료됩니다.
링커 스크립트에서는 다음을 사용하여 동일한 효과를 얻을 수 있습니다.
"EXTERN", "ASSERT", "DEFINED"를 함께 사용할 수 있습니다. 이 옵션은
추가 기호를 요구하려면 여러 번 필요합니다.
-우르 C++ 프로그램 이외의 모든 경우 이 옵션은 다음과 같습니다.
-r: 재배치 가능한 출력을 생성합니다. 즉, 다음이 가능한 출력 파일입니다.
차례로 입력으로 사용됩니다 ld. C++ 프로그램을 연결할 때, -우르 하지
생성자에 대한 참조를 확인하는 것과는 달리 -r. 작동하지 않습니다
사용 -우르 자신과 연결된 파일에 -우르; 한 번
생성자 테이블이 빌드되었으므로 추가할 수 없습니다. 사용하다 -우르
마지막 부분 링크에만 해당되며 -r 다른 사람들을 위해.
--고아 처리=모드
고아 섹션 처리 방법을 제어합니다. 고아 섹션은 다음과 같습니다.
링커 스크립트에 구체적으로 언급되지 않았습니다.
모드 다음 값 중 하나를 가질 수 있습니다.
"장소"
고아 섹션은 적합한 출력 섹션에 배치됩니다.
기술된 전략을 따르면 고아 섹션. 그만큼
option --고유 한 또한 섹션이 배치되는 방식에도 영향을 미칩니다.
"버리다"
모든 고아 섹션은 삭제됩니다.
/버리다/ 안내
"경고하다"
링커는 "place"에 대해 고아 섹션을 배치합니다.
경고도 내립니다.
"오류"
고아 섹션이 있는 경우 링커가 오류와 함께 종료됩니다.
녹이다.
기본값인 경우 --고아 처리 "장소"가 주어지지 않습니다.
--고유[=제]
일치하는 모든 입력 섹션에 대해 별도의 출력 섹션을 만듭니다.
제또는 선택적 와일드카드인 경우 제 인수가 누락되었습니다.
모든 고아 입력 섹션에 대해. 고아 섹션은
링커 스크립트에 구체적으로 언급된 경우. 이 옵션을 사용할 수 있습니다.
명령줄에서 여러 번; 정상적인 병합을 방해합니다.
동일한 이름을 가진 입력 섹션의 경우 출력 섹션을 재정의합니다.
링커 스크립트에서의 할당.
-v
--번역
-V 에 대한 버전 번호 표시 ld. 그만큼 -V 옵션에는 다음도 나열됩니다.
지원되는 에뮬레이션.
-x
--모두 삭제
모든 로컬 기호를 삭제합니다.
-X
--discard-locals
모든 임시 로컬 심볼을 삭제합니다. (이 심볼은 다음으로 시작합니다.
일반적으로 시스템별 로컬 레이블 접두사 .L ELF 시스템용
or L 전통적인.out 시스템의 경우.)
-y 상징
--추적 기호=상징
연결된 각 파일의 이름을 인쇄하십시오. 상징 나타납니다. 이것
옵션은 여러 번 주어질 수 있습니다. 많은 시스템에서는
밑줄을 앞에 붙여야 합니다.
이 옵션은 정의되지 않은 심볼이 있는 경우에 유용합니다.
링크를 첨부했지만, 출처가 어디인지는 모르겠습니다.
-Y 통로
추가 통로 기본 라이브러리 검색 경로로 이동합니다. 이 옵션이 있습니다.
Solaris와 호환됩니다.
-z 키워드는
인식된 키워드는 다음과 같습니다.
콤브록
여러 개의 재배치 섹션을 결합하고 이를 정렬하여 동적으로 만듭니다.
심볼 조회 캐싱이 가능합니다.
데프
객체 파일에서 정의되지 않은 심볼을 허용하지 않습니다. 정의되지 않은 심볼
공유 라이브러리에서는 여전히 허용됩니다.
실행 스택
개체를 실행 가능한 스택이 필요한 것으로 표시합니다.
글로벌
이 옵션은 공유 객체를 빌드할 때만 의미가 있습니다.
이 공유 객체에 의해 정의된 심볼을 사용할 수 있게 합니다.
이후 로드된 라이브러리의 심볼 확인을 위해.
초기화
이 옵션은 공유 객체를 빌드할 때만 의미가 있습니다.
이는 런타임 초기화가 수행되도록 객체를 표시합니다.
다른 객체의 런타임 초기화 전에 발생합니다.
동시에 프로세스에 도입되었습니다. 마찬가지로
객체의 런타임 마무리는 런타임 이후에 발생합니다.
다른 객체의 마무리.
끼어들다
모든 객체 앞에 해당 심볼 테이블이 삽입된다는 것을 표시합니다.
기호이지만 기본 실행 파일입니다.
게으른
실행 파일이나 공유 라이브러리를 생성할 때 다음을 표시합니다.
동적 링커에게 함수 호출 해결을 연기하도록 지시합니다.
함수가 호출되는 시점(지연 바인딩)
로드 시점보다 지연 바인딩이 기본값입니다.
로드플랫
해당 필터가 즉시 처리되도록 객체를 표시합니다.
실행 시간.
물 데프
다중 정의를 허용합니다.
노콤브록
여러 reloc 섹션 결합을 비활성화합니다.
nocopyreloc
링커에서 생성된 .dynbss 변수를 대신 사용하여 비활성화합니다.
공유 라이브러리에 정의된 변수입니다. 동적 변수가 생성될 수 있습니다.
텍스트 재배치.
노디폴트립
이것의 종속성을 검색하는 객체를 표시합니다.
객체는 기본 라이브러리 검색 경로를 무시합니다.
노드 삭제
런타임에 개체를 언로드해서는 안 된다고 표시합니다.
노드로펜
"dlopen"에 사용할 수 없는 개체를 표시합니다.
결절
"dldump"로 개체를 덤프할 수 없음을 표시합니다.
노이젝스택
개체를 실행 가능한 스택이 필요하지 않은 것으로 표시합니다.
본문
공유 개체의 DT_TEXTREL을 오류로 처리합니다.
노텍스트
공유 객체의 DT_TEXTREL을 오류로 취급하지 마십시오.
텍스트 오프
공유 객체의 DT_TEXTREL을 오류로 취급하지 마십시오.
노렐로
ELF "PT_GNU_RELRO" 세그먼트 헤더를 생성하지 마십시오.
목적.
지금 실행 파일이나 공유 라이브러리를 생성할 때 다음을 표시합니다.
프로그램이 실행될 때 모든 심볼을 확인하도록 동적 링커에 지시합니다.
시작되거나 공유 라이브러리가 연결된 경우
dlopen은 함수 호출 해결을 지연하는 대신
함수가 처음 호출되는 시점.
출발지
개체에 $ORIGIN이 포함될 수 있음을 표시합니다.
렐로
개체에 ELF "PT_GNU_RELRO" 세그먼트 헤더를 만듭니다.
최대 페이지 크기=가치
에뮬레이션 최대 페이지 크기를 다음으로 설정합니다. 가치.
공통 페이지 크기=가치
에뮬레이션 공통 페이지 크기를 다음으로 설정합니다. 가치.
스택 크기 =가치
ELF "PT_GNU_STACK" 세그먼트의 스택 크기를 지정합니다.
0을 지정하면 기본 0이 아닌 크기가 무시됩니다.
"PT_GNU_STACK" 세그먼트 생성.
bndplt
PLT 항목에 항상 BND 접두사를 생성합니다. 지원됨
리눅스/x86_64.
noextern 보호 데이터
빌드할 때 보호된 데이터 심볼을 외부로 처리하지 마십시오.
공유 라이브러리입니다. 이 옵션은 링커 백엔드 기본값을 재정의합니다.
잘못된 재배치를 해결하는 데 사용할 수 있습니다.
컴파일러가 생성한 보호된 데이터 심볼. 업데이트
다른 모듈에 의해 보호된 데이터 심볼은 볼 수 없습니다.
결과 공유 라이브러리. i386 및 x86-64에서 지원됩니다.
call-nop=접두사-추가
call-nop=접두사-nop
call-nop=접미사-nop
call-nop=접두사-바이트
call-nop=접미사-바이트
간접 변환 시 1바이트 "NOP" 패딩을 지정합니다.
GOT 슬롯을 통해 로컬로 정의된 함수 foo를 호출합니다.
call-nop=접두사-추가 "0x67 호출 foo"를 생성합니다.
call-nop=접두사-nop "0x90 호출 foo"를 생성합니다.
call-nop=접미사-nop "call foo 0x90"을 생성합니다.
call-nop=접두사-바이트 "를 생성한다바이트 전화 푸".
call-nop=접미사-바이트 "call foo" 생성 바이트". 지원됨
i386과 x86_64.
다른 키워드는 Solaris 호환성을 위해 무시됩니다.
-( 기록 보관소 -)
--시작 그룹 기록 보관소 --end-그룹
The 기록 보관소 아카이브 파일 목록이어야 합니다. 다음 중 하나일 수 있습니다.
명시적인 파일 이름 또는 -l 옵션을 제공합니다.
지정된 아카이브는 새로운 아카이브가 없을 때까지 반복적으로 검색됩니다.
정의되지 않은 참조가 생성됩니다. 일반적으로 아카이브가 검색됩니다.
명령줄에 지정된 순서대로 한 번만 실행됩니다.
정의되지 않은 문제를 해결하기 위해 해당 아카이브의 심볼이 필요한 경우
나중에 나타나는 아카이브의 객체가 참조하는 기호
명령줄에서 링커는 이를 해결할 수 없습니다.
참조. 아카이브를 그룹화하면 모두 검색할 수 있습니다.
가능한 모든 참조가 해결될 때까지 반복적으로 수행합니다.
이 옵션을 사용하면 성능에 상당한 비용이 발생합니다.
불가피한 순환 참조가 있는 경우에만 사용합니다.
두 개 이상의 아카이브 간.
--수락-알 수 없는-입력-아치
--no-accept-알 수 없는-입력-아치
링커에게 아키텍처를 알 수 없는 입력 파일을 허용하도록 지시합니다.
인식됨. 사용자는 자신이 무엇을 알고 있는지 알고 있다고 가정합니다.
하고 있으며 의도적으로 이러한 알려지지 않은 입력 파일을 링크하려고 합니다.
이는 릴리스 2.14 이전에는 링커의 기본 동작이었습니다.
릴리스 2.14부터 기본 동작은 이러한 것을 거부하는 것입니다.
입력 파일이므로 --수락-알 수 없는-입력-아치 옵션이 되었습니다
이전의 동작을 복원하기 위해 추가되었습니다.
--필요에 따라
--필요에 따라 없음
이 옵션은 동적 라이브러리의 ELF DT_NEEDED 태그에 영향을 미칩니다.
명령줄에 언급된 후 --필요에 따라 옵션을 선택합니다.
일반적으로 링커는 각 동적에 대해 DT_NEEDED 태그를 추가합니다.
명령줄에 언급된 라이브러리는 다음과 같습니다.
실제로 라이브러리가 필요한지 여부. --필요에 따라 DT_NEEDED가 발생합니다.
태그는 라이브러리에 대해서만 방출됩니다. at 그 포인트 in 전에, 링크
정규에서 약하지 않은 정의되지 않은 심볼 참조를 충족합니다.
개체 파일 또는 라이브러리가 DT_NEEDED 목록에서 발견되지 않는 경우
다른 필요한 라이브러리의 경우 약하지 않은 정의되지 않은 심볼 참조
다른 필요한 동적 라이브러리에서. 개체 파일 또는 라이브러리
명령줄에 나타나는 시간 내에 문제의 도서관은 그렇지 않습니다
라이브러리가 필요한 것으로 간주되는지 여부에 영향을 미칩니다. 이는 다음과 유사합니다.
아카이브에서 개체 파일을 추출하기 위한 규칙.
--필요에 따라 없음 기본 동작을 복원합니다.
--추가 필요
--추가 필요 없음
이 두 옵션은 유사성 때문에 더 이상 사용되지 않습니다.
그들의 이름을 --필요에 따라 그리고 --필요에 따라 없음 옵션. 그들은
대체되었습니다 --copy-dt-필요한 항목 그리고
--no-copy-dt-필요한 항목.
-주장하다 키워드는
이 옵션은 SunOS 호환성을 위해 무시됩니다.
-비다이나믹
-디
-통화_공유
동적 라이브러리에 대한 링크입니다. 이는 다음에서만 의미가 있습니다.
공유 라이브러리가 지원되는 플랫폼입니다. 이 옵션은
일반적으로 이러한 플랫폼의 기본값입니다. 다양한 변형
이 옵션은 다양한 시스템과의 호환성을 위해 제공됩니다.
명령줄에서 이 옵션을 여러 번 사용하면 다음과 같은 효과가 있습니다.
도서관 검색 -l 그 뒤를 잇는 옵션.
-B그룹
동적 "DT_FLAGS_1" 항목에서 "DF_1_GROUP" 플래그를 설정합니다.
섹션. 이렇게 하면 런타임 링커가 이 섹션에서 조회를 처리합니다.
객체와 해당 종속성은 그룹 내부에서만 수행되어야 합니다.
--unresolved-symbols=전체 보고 암시됩니다. 이 옵션은
공유 라이브러리를 지원하는 ELF 플랫폼에서 의미가 있습니다.
-비정적
-NS
-비공유
-공전
공유 라이브러리에 링크하지 마세요. 이는 다음에서만 의미가 있습니다.
공유 라이브러리가 지원되는 플랫폼. 다양한
이 옵션의 변형은 다양한 시스템과의 호환성을 위해 만들어졌습니다.
명령줄에서 이 옵션을 여러 번 사용할 수 있습니다.
도서관 검색에 영향을 미칩니다 -l 그 뒤를 잇는 옵션. 이것
옵션도 의미합니다 --unresolved-symbols=전체 보고. 이 옵션
와 함께 사용할 수 있습니다. -공유. 그렇게 하면 공유 라이브러리가
생성되지만 라이브러리의 모든 외부 참조는
정적 라이브러리에서 항목을 가져와서 해결해야 합니다.
-비심볼릭
공유 라이브러리를 생성할 때 전역 심볼에 대한 참조를 바인딩합니다.
공유 라이브러리 내의 정의에 대한 내용(있는 경우). 일반적으로
공유 라이브러리에 연결된 프로그램이 가능한가?
공유 라이브러리 내의 정의를 재정의합니다. 이 옵션은
또한 다음과 함께 사용할 수 있습니다 --내보내기-동적 옵션을 생성할 때
위치 독립적인 실행 파일, 전역 참조를 바인딩합니다.
실행 파일 내의 정의에 대한 기호입니다. 이 옵션은
공유 라이브러리를 지원하는 ELF 플랫폼에서만 의미가 있습니다.
위치에 독립적인 실행 파일.
-Bsymbolic-함수
공유 라이브러리를 생성할 때 전역 함수에 대한 참조를 바인딩합니다.
공유 라이브러리 내의 정의에 대한 기호(있는 경우).
옵션은 다음과 함께 사용할 수도 있습니다. --내보내기-동적 옵션, 언제
참조를 바인딩하기 위해 위치 독립 실행 파일을 생성합니다.
실행 파일 내의 정의에 전역 함수 심볼을 추가합니다.
이 옵션은 다음을 지원하는 ELF 플랫폼에서만 의미가 있습니다.
공유 라이브러리와 위치 독립 실행 파일.
--동적 목록=동적 목록 파일
링커에 동적 목록 파일의 이름을 지정합니다.
일반적으로 공유 라이브러리를 생성할 때 목록을 지정하는 데 사용됩니다.
참조가 바인딩되어서는 안 되는 전역 심볼
공유 라이브러리 내 정의 또는 동적으로 생성
심볼 목록을 지정하기 위해 연결된 실행 파일
실행 파일의 심볼 테이블에 추가됩니다. 이 옵션은
공유 라이브러리를 지원하는 ELF 플랫폼에서 의미가 있습니다.
동적 목록의 형식은 버전 노드와 동일합니다.
범위와 노드 이름 없음. 참조 버전
--동적 목록 데이터
동적 목록에 모든 전역 데이터 기호를 포함합니다.
--동적 목록-cpp-new
C++ 연산자 new와 delete에 대한 내장 동적 목록을 제공합니다.
이는 주로 공유 libstdc++를 빌드하는 데 유용합니다.
--동적 목록-cpp-유형 정보
C++ 런타임 유형에 대한 내장 동적 목록을 제공합니다.
신분증.
--체크 섹션
--체크 섹션 없음
링커에게 묻습니다. 지원 섹션 주소를 확인한 후
중복이 있는지 확인하기 위해 할당됩니다. 일반적으로 링커는
이 검사를 수행하고 중복이 발견되면 다음을 수행합니다.
적절한 오류 메시지를 생성합니다. 링커는 이에 대해 알고 있으며
오버레이의 섹션을 허용합니다. 기본값은
명령줄 스위치를 사용하여 동작을 복원할 수 있습니다.
--체크 섹션. 섹션 중복은 일반적으로 확인되지 않습니다.
재배치 가능한 링크. 이 경우 다음을 사용하여 강제로 검사를 수행할 수 있습니다.
전에, --체크 섹션 옵션을 선택합니다.
--copy-dt-필요한 항목
--no-copy-dt-필요한 항목
이 옵션은 참조되는 동적 라이브러리의 처리에 영향을 미칩니다.
DT_NEEDED 태그로 내부 ELF 동적 라이브러리는 다음과 같습니다.
명령줄. 일반적으로 링커는 DT_NEEDED 태그를 추가하지 않습니다.
DT_NEEDED 태그에 언급된 각 라이브러리에 대한 출력 바이너리
입력 동적 라이브러리. --copy-dt-필요한 항목 에 지정된
그러나 명령줄에 따라오는 동적 라이브러리는 다음과 같습니다.
DT_NEEDED 항목이 추가되었습니다. 기본 동작은 다음과 같습니다.
로 복원 --no-copy-dt-필요한 항목.
이 옵션은 또한 심볼의 해상도에 영향을 미칩니다.
동적 라이브러리. --copy-dt-필요한 항목 동적 라이브러리
명령줄에 언급된 내용은 재귀적으로 검색됩니다.
다른 라이브러리에 DT_NEEDED 태그를 따르기 위해
출력 바이너리에 필요한 심볼을 확인합니다. 기본값을 사용하여
그러나 이를 따르는 동적 라이브러리 검색 설정
동적 라이브러리 자체에서 중지됩니다. DT_NEEDED 링크는 없습니다.
기호를 해결하기 위해 탐색해야 합니다.
--cref
교차 참조 테이블을 출력합니다. 링커 맵 파일이 있는 경우
생성된 교차 참조 표가 맵 파일에 인쇄됩니다.
그렇지 않으면 표준 출력에 인쇄됩니다.
표의 형식은 의도적으로 간단하므로
필요한 경우 스크립트로 쉽게 처리됩니다. 기호는 인쇄됩니다.
이름순으로 정렬되어 있습니다. 각 기호에 대해 파일 이름 목록이 표시됩니다.
주어진 경우 기호가 정의된 경우 나열된 첫 번째 파일은
정의의 위치입니다. 기호가 공통으로 정의된 경우
값이 있으면 이런 일이 발생하는 모든 파일이 다음에 나타납니다. 마지막으로
해당 심볼을 참조하는 파일이 나열됩니다.
--no-define-common
이 옵션은 공통 기호에 대한 주소 할당을 금지합니다.
스크립트 명령 "INHIBIT_COMMON_ALLOCATION"은 동일한 효과를 갖습니다.
The --no-define-common 옵션을 사용하면 결정을 분리할 수 있습니다.
출력 선택에서 공통 기호에 주소 할당
파일 유형; 그렇지 않으면 재배치 불가능한 출력 유형이 할당을 강제합니다.
공통 기호에 대한 주소. 사용 --no-define-common 수
공유 라이브러리에서 참조되는 공통 기호
주 프로그램에서만 주소가 할당됩니다. 이렇게 하면
공유 라이브러리의 사용되지 않는 중복 공간을 방지하고
잘못된 중복을 해결할 때 혼란이 발생할 수 있습니다.
런타임을 위한 특수 검색 경로가 있는 많은 동적 모듈이 있습니다.
심볼 해상도.
--defsym=상징=표현
절대값을 포함하는 출력 파일에 글로벌 심볼을 생성합니다.
에서 제공한 주소 표현. 이 옵션은 여러 번 사용할 수 있습니다.
명령줄에서 여러 기호를 정의하는 데 필요한 경우. A
제한된 형태의 산술이 지원됩니다. 표현 이번에
문맥: 16진수 상수 또는 이름을 제공할 수 있습니다.
기존 기호를 사용하거나 "+" 및 "-"를 사용하여 16진수를 추가하거나 뺍니다.
상수나 기호를 사용합니다. 더 정교한 표현이 필요한 경우
스크립트에서 링커 명령 언어를 사용하는 것을 고려해보세요. 참고 :
사이에 공백이 없어야 합니다. 상징, 등호
("="), 그리고 표현.
--디앵글[=스타일]
-- 엉킴 없음
이러한 옵션은 오류 발생 시 심볼 이름을 분리할지 여부를 제어합니다.
메시지 및 기타 출력. 링커가 디매글링하라는 명령을 받으면
읽을 수 있는 방식으로 기호 이름을 표시하려고 합니다.
객체 파일 형식에서 사용되는 경우 선행 밑줄 및
C++로 변형된 심볼 이름을 사용자가 읽을 수 있는 이름으로 변환합니다.
컴파일러마다 서로 다른 맹글링 스타일이 있습니다. 선택 사항
demangling 스타일 인수는 적절한 것을 선택하는 데 사용될 수 있습니다.
컴파일러에 대한 디매글링 스타일입니다. 링커는 다음과 같이 디매글링합니다.
환경 변수가 아닌 경우 기본값 COLLECT_NO_DEMANGLE 설정됩니다.
이러한 옵션은 기본값을 재정의하는 데 사용될 수 있습니다.
-I파일
--동적 링커=파일
동적 링커의 이름을 설정합니다. 이는 다음과 같은 경우에만 의미가 있습니다.
동적으로 연결된 ELF 실행 파일을 생성합니다. 기본 동적
링커는 일반적으로 정확합니다. 무엇을 사용해야 할지 모르는 경우 이것을 사용하지 마십시오.
하고있다.
--동적 링커 없음
실행 파일을 생성할 때 동적 요청을 생략합니다.
로드 시 사용되는 링커입니다. 이는 ELF에만 적용됩니다.
동적 재배치를 포함하는 실행 파일이며 일반적으로 필요합니다.
이러한 재배치를 처리할 수 있는 진입점 코드입니다.
--치명적인 경고
--치명적인 경고 없음
모든 경고를 오류로 처리합니다. 기본 동작은 다음과 같습니다.
옵션으로 복원됨 --치명적인 경고 없음.
--force-exe-접미사
출력 파일에 .exe 접미사가 있는지 확인하십시오.
성공적으로 빌드된 완전히 링크된 출력 파일에 다음이 없는 경우
".exe" 또는 ".dll" 접미사를 사용하는 경우 이 옵션을 사용하면 링커가 다음을 복사하도록 강제합니다.
출력 파일을 ".exe" 접미사가 붙은 동일한 이름 중 하나로 변환합니다.
이 옵션은 수정되지 않은 Unix makefile을 사용할 때 유용합니다.
일부 Windows 버전은 Microsoft Windows 호스트를 실행하지 않으므로
".exe" 접미사로 끝나지 않는 한 이미지입니다.
--gc-섹션
--no-gc-섹션
사용되지 않는 입력 섹션의 가비지 수집을 활성화합니다. 이 설정은 무시됩니다.
이 옵션을 지원하지 않는 대상에서. 기본 동작은 다음과 같습니다.
(이 가비지 수집을 수행하지 않으면) 다음을 통해 복원할 수 있습니다.
지정 --no-gc-섹션 명령줄에서. 쓰레기
COFF 및 PE 형식 대상에 대한 컬렉션이 지원되지만
구현은 현재 실험적인 것으로 간주됩니다.
--gc-섹션 어떤 입력 섹션이 사용되는지 검사하여 결정합니다.
기호 및 재배치. 항목 기호가 포함된 섹션
그리고 명령줄에서 정의되지 않은 기호를 포함하는 모든 섹션
참조되는 기호가 포함된 섹션도 그대로 유지됩니다.
동적 객체. 공유 라이브러리를 빌드할 때
링커는 표시되는 모든 심볼이 참조된다고 가정해야 합니다.
이 초기 섹션 세트가 결정되었습니다. 링커
재귀적으로 참조되는 모든 섹션을 사용됨으로 표시합니다.
이전. 참조 --기입 그리고 --찾으시는 주소가 없습니다.
이 옵션은 부분 링크를 수행할 때 설정할 수 있습니다(활성화됨)
option -r). 이 경우 유지되는 기호의 루트는 다음과 같아야 합니다.
명시적으로 지정된 --기입 or --찾으시는 주소가 없습니다 옵션 또는
링커 스크립트의 "ENTRY" 명령을 통해.
--print-gc-섹션
--no-print-gc-섹션
가비지 수집으로 제거된 모든 섹션을 나열합니다. 목록은 다음과 같습니다.
stderr에 출력됩니다. 이 옵션은 가비지 오류가 있는 경우에만 유효합니다.
수집이 다음을 통해 활성화되었습니다. --gc-섹션) 옵션입니다.
기본 동작(제거된 섹션을 나열하지 않음)
지정하여 복원할 수 있습니다 --no-print-gc-섹션 명령에
줄입니다.
--인쇄 출력 형식
기본 출력 형식의 이름을 인쇄합니다(아마도 영향을 받았을 것입니다)
다른 명령줄 옵션). 이것은 나타날 문자열입니다.
"OUTPUT_FORMAT" 링커 스크립트 명령에서.
--인쇄 메모리 사용
생성된 메모리 영역의 사용된 크기, 전체 크기 및 사용된 크기를 인쇄합니다.
와 더불어 메모리 명령입니다. 이것은 내장된 대상에서 유용합니다.
사용 가능한 메모리 양을 빠르게 확인할 수 있습니다. 형식은 다음과 같습니다.
출력에는 지역별로 하나의 헤드라인과 하나의 줄이 있습니다. 둘 다 인간입니다.
도구로 쉽게 읽을 수 있고 구문 분석할 수 있습니다. 다음은 그 예입니다.
출력 :
사용된 메모리 영역 크기 영역 크기 사용된 %age
ROM: 256KB 1MB 25.00%
RAM: 32B 2GB 0.00%
--도움
표준 출력에 명령줄 옵션 요약을 인쇄합니다.
종료하십시오.
-타겟 홀프
표준에 대한 모든 대상별 옵션 요약을 인쇄합니다.
출력 및 종료.
-지도=맵 파일
파일에 대한 링크 맵 인쇄 맵 파일. 에 대한 설명을 참조하십시오.
-M 옵션, 위.
--no-keep-메모리
ld 일반적으로 메모리 사용보다 속도를 최적화하여 캐싱합니다.
메모리에 있는 입력 파일의 심볼 테이블입니다. 이 옵션은 ld 에
대신 심볼 테이블을 다시 읽어 메모리 사용을 최적화하세요.
필요에 따라. 다음과 같은 경우 필요할 수 있습니다. ld 메모리 공간이 부족합니다
대용량 실행 파일을 연결하는 동안.
--정의되지 않음
-z 데프
일반 개체 파일에서 해결되지 않은 심볼 참조를 보고합니다.
링커가 비심볼릭 공유를 생성하는 경우에도 이 작업이 수행됩니다.
라이브러리. 스위치 --[no-]allow-shlib-정의되지 않음 제어
공유에서 발견된 해결되지 않은 참조를 보고하기 위한 동작
라이브러리가 연결됨.
--허용-다중 정의
-z 물 데프
일반적으로 심볼이 여러 번 정의되면 링커는
치명적인 오류를 보고합니다. 이 옵션을 사용하면 여러 정의가 가능하며
첫 번째 정의가 사용됩니다.
--allow-shlib-정의되지 않음
--no-allow-shlib-정의되지 않음
공유 라이브러리에서 정의되지 않은 심볼을 허용하거나 허용하지 않습니다.
스위치는 다음과 유사합니다 --정의되지 않음 단, 그것은 다음을 결정합니다.
정의되지 않은 심볼이 공유 라이브러리에 있는 경우의 동작
일반 객체 파일보다. 정의되지 않은 파일의 내용에는 영향을 미치지 않습니다.
일반 객체 파일의 심볼이 처리됩니다.
기본 동작은 정의되지 않은 모든 기호에 대한 오류를 보고하는 것입니다.
링커가 사용되는 경우 공유 라이브러리에서 참조됨
실행 파일을 생성하지만 링커가 사용 중인 경우 허용합니다.
공유 라이브러리를 생성하려면
공유에서 정의되지 않은 심볼 참조를 허용하는 이유
링크 타임에 지정된 라이브러리는 다음과 같습니다.
· 링크 타임에 지정된 공유 라이브러리는 동일하지 않을 수 있습니다.
로드 시간에 사용 가능한 것이므로 기호가 될 수 있습니다.
실제로 로드 시간에 해결될 수 있습니다.
· BeOS 및 HPPA와 같은 일부 운영 체제가 있습니다.
공유 라이브러리에 정의되지 않은 심볼이 있는 것은 정상입니다.
예를 들어 BeOS 커널은 로드 시 공유 라이브러리에 패치를 적용합니다.
가장 적합한 기능을 선택할 시간
현재 아키텍처. 이는 예를 들어 다음과 같은 경우에 사용됩니다.
적절한 memset 함수를 동적으로 선택합니다.
--정의되지 않은 버전 없음
일반적으로 심볼에 정의되지 않은 버전이 있는 경우 링커는
무시하세요. 이 옵션은 정의되지 않은 버전의 심볼을 허용하지 않습니다.
대신 치명적인 오류가 발생합니다.
--기본-심버
기본 심볼 버전(soname)을 생성하고 사용합니다.
버전이 지정되지 않은 내보낸 심볼.
--기본-가져온-symver
기본 심볼 버전(soname)을 생성하고 사용합니다.
버전이 지정되지 않은 가져온 심볼.
--경고 불일치
일반적으로 ld 입력을 연결하려고 하면 오류가 발생합니다.
어떤 이유로든 일치하지 않는 파일, 아마도
다른 프로세서 또는 다른 프로세서용으로 컴파일되었습니다.
엔디안. 이 옵션은 ld 그것은 조용히 허용되어야 한다
이러한 오류가 발생할 수 있습니다. 이 옵션은 신중하게 사용해야 합니다.
당신이 그것을 보장하기 위해 특별한 조치를 취한 경우
링커 오류가 부적절합니다.
--경고-검색-불일치 없음
일반적으로 ld 호환되지 않는 라이브러리를 찾으면 경고를 표시합니다.
도서관 검색 중. 이 옵션을 선택하면 경고음이 꺼집니다.
--전체 아카이브 없음
의 효과를 끕니다. --전체 아카이브 후속 옵션
아카이브 파일.
--noinhibit-exec
실행 가능한 출력 파일을 계속 사용할 수 있는 경우 보관하세요.
일반적으로 링커는 다음과 같은 경우 출력 파일을 생성하지 않습니다.
링크 프로세스 중 오류가 발생하여 쓰기 없이 종료됩니다.
오류가 발생할 때마다 출력 파일을 생성합니다.
-nostdlib
명령에 명시적으로 지정된 라이브러리 디렉토리만 검색합니다.
라인. 링커 스크립트에 지정된 라이브러리 디렉토리(
명령줄에 지정된 링커 스크립트는 무시됩니다.
--o형식=출력 형식
ld 여러 종류의 개체 파일을 지원하도록 구성될 수 있습니다.
귀하의 경우 ld 이렇게 구성하면 다음을 사용할 수 있습니다. --o형식 option
출력 객체 파일의 바이너리 형식을 지정합니다.
ld 대체 개체 형식을 지원하도록 구성되어 있으면
일반적으로 이것을 지정해야 합니다. ld 생성하도록 구성해야 합니다.
기본 출력 형식으로 각 시스템에서 가장 일반적인 형식입니다.
출력 형식 텍스트 문자열, 특정 형식의 이름입니다.
BFD 라이브러리에서 지원합니다. (사용 가능한 바이너리를 나열할 수 있습니다.
형식 객체 덤프 -i.) 스크립트 명령 "OUTPUT_FORMAT"을 사용할 수 있습니다.
출력 형식도 지정하지만, 이 옵션은 이를 무시합니다.
-파이
--pic-실행 가능
위치 독립적인 실행 파일을 생성합니다. 현재로서는
ELF 플랫폼에서 지원됩니다. 위치 독립적 실행 파일은
공유 라이브러리와 유사합니다. 즉, 라이브러리가 다음에 의해 재배치된다는 점입니다.
OS가 선택한 가상 주소에 대한 동적 링커
(호출마다 다를 수 있음). 일반적인 동적인 방식과 같음
연결된 실행 파일은 실행될 수 있으며 기호는 정의되어 있습니다.
실행 파일은 공유 라이브러리에 의해 재정의될 수 없습니다.
-qmagic
이 옵션은 Linux 호환성을 위해 무시됩니다.
-Qy 이 옵션은 SVR4 호환성을 위해 무시됩니다.
--안심하다
--휴식 없음
기계에 따라 효과가 달라지는 옵션입니다. 이 옵션은
몇몇 대상에서 지원됨.
일부 플랫폼에서는 --안심하다 옵션은 특정 대상을 수행합니다.
링커가 해결할 때 가능해지는 글로벌 최적화
프로그램에서 주소 지정, 주소 모드 완화 등
새로운 지침을 합성하고 현재 지침의 더 짧은 버전을 선택합니다.
지침 및 상수 값 결합.
일부 플랫폼에서는 이러한 링크 시간 글로벌 최적화가 다음을 수행할 수 있습니다.
결과 실행 파일의 심볼릭 디버깅이 불가능합니다.
Matsushita MN10200 및 MN10300 제품군의 경우로 알려져 있습니다.
프로세서의.
이것이 지원되지 않는 플랫폼에서는 --안심하다 허용되지만
무시되었습니다.
플랫폼에서 --안심하다 옵션이 허용됩니다 --휴식 없음 될 수 있습니다
해당 기능을 비활성화하는 데 사용됩니다.
--retain-기호-파일=파일 이름
유지하다 만 파일에 나열된 기호 파일 이름, 모두 버리기
다른 사람. 파일 이름 하나의 심볼 이름을 갖는 단순한 플랫 파일입니다.
라인. 이 옵션은 특히 환경(예:)에서 유용합니다.
VxWorks)에서 대규모 글로벌 심볼 테이블이 축적됩니다.
점차적으로, 런타임 메모리를 보존하기 위해.
--retain-기호-파일 하지 지원 정의되지 않은 기호를 삭제하거나
이전에 필요한 기호.
다음만 지정할 수 있습니다. --retain-기호-파일 한 번 명령에
줄입니다. 재정의합니다. -s 그리고 -S.
-r경로=DIR
런타임 라이브러리 검색 경로에 디렉터리를 추가합니다. 이는 다음과 같이 사용됩니다.
ELF 실행 파일을 공유 객체와 연결할 때. 모두 -rpath
인수는 연결되어 런타임 링커에 전달됩니다.
이를 사용하여 런타임에 공유 객체를 찾습니다. -rpath option
또한 필요한 공유 객체를 찾을 때에도 사용됩니다.
링크에 명시적으로 포함된 공유 객체; 설명을 참조하세요.
의 -rpath-링크 옵션. 만약에 -rpath 연결할 때는 사용되지 않습니다.
ELF 실행 파일, 환경 변수의 내용
"LD_RUN_PATH"는 정의된 경우 사용됩니다.
The -rpath 이 옵션은 SunOS에서도 사용할 수 있습니다. 기본적으로 SunOS에서는
링커는 모든 것에서 런타임 검색 경로를 형성합니다. -L
주어진 옵션입니다. 만약 -rpath 옵션이 사용되면 런타임
검색 경로는 다음을 사용하여 독점적으로 형성됩니다. -rpath 옵션
무시 -L 옵션입니다. 이것은 gcc를 사용할 때 유용할 수 있습니다.
많은 것을 추가합니다 -L NFS 마운트 파일 시스템에 있을 수 있는 옵션.
다른 ELF 링커와의 호환성을 위해 -R 옵션은
파일 이름이 아닌 디렉토리 이름이 뒤에 붙는 경우
로 취급됨 -rpath 옵션을 선택합니다.
-rpath-링크=DIR
ELF나 SunOS를 사용할 때 하나의 공유 라이브러리가 다른 공유 라이브러리를 필요로 할 수 있습니다.
이것은 "ld -shared" 링크에 공유 라이브러리가 포함되어 있을 때 발생합니다.
입력 파일 중 하나입니다.
링커가 비 종속성을 수행할 때 이러한 종속성을 발견하면
공유되고 재배치할 수 없는 링크의 경우 자동으로 위치를 찾으려고 합니다.
필요한 공유 라이브러리를 링크에 포함하세요.
명시적으로 포함되지 않습니다. 그런 경우에는 -rpath-링크 option
검색할 첫 번째 디렉토리 세트를 지정합니다. NS -rpath-링크
옵션은 디렉토리 이름 시퀀스를 지정할 수 있습니다.
콜론으로 구분된 이름 목록을 지정하거나 다음을 표시합니다.
여러 번.
이 옵션은 검색을 무시하므로 주의해서 사용해야 합니다.
공유 라이브러리로 하드 컴파일되었을 수 있는 경로입니다.
이런 경우에는 의도치 않게 다른 것을 사용할 수 있습니다.
런타임 링커보다 더 많은 검색 경로를 제공합니다.
링커는 다음 검색 경로를 사용하여 필요한 항목을 찾습니다.
공유 라이브러리:
1. 다음에 의해 지정된 모든 디렉토리 -rpath-링크 옵션을 제공합니다.
2. 다음에 의해 지정된 모든 디렉토리 -rpath 옵션. 차이점
사이에 -rpath 그리고 -rpath-링크 에 의해 지정된 디렉토리입니다.
-rpath 옵션은 실행 파일에 포함되어 있으며 다음에서 사용됩니다.
런타임은 반면 -rpath-링크 옵션은 다음에서만 유효합니다.
링크 시간. 검색 중 -rpath 이런 식으로만 지원됩니다
구성된 네이티브 링커 및 교차 링커
와 더불어 --sysroot와 함께 옵션을 선택합니다.
3. ELF 시스템에서 기본 링커의 경우 -rpath 그리고
-rpath-링크 옵션이 사용되지 않은 경우 콘텐츠를 검색합니다.
환경 변수 "LD_RUN_PATH".
4. SunOS에서 -rpath 옵션이 사용되지 않았습니다. 검색하세요.
를 사용하여 지정된 디렉토리 -L 옵션을 제공합니다.
5. 네이티브 링커의 경우 환경의 내용을 검색합니다.
변수 "LD_LIBRARY_PATH".
6. 네이티브 ELF 링커의 경우 "DT_RUNPATH"의 디렉토리 또는
공유 라이브러리의 "DT_RPATH"는 공유 라이브러리를 검색합니다.
필요한 라이브러리입니다. "DT_RPATH" 항목은 다음과 같은 경우 무시됩니다.
"DT_RUNPATH" 항목이 있습니다.
7. 기본 디렉토리, 일반적으로 / lib 그리고 를 / usr / lib에.
8. ELF 시스템의 기본 링커의 경우 파일이
/etc/ld.so.conf 존재하는 경우 해당 디렉토리에서 발견된 디렉토리 목록
파일.
필요한 공유 라이브러리를 찾을 수 없는 경우 링커가 다음을 실행합니다.
경고를 받고 링크를 따라 계속 진행하세요.
-공유
-B공유 가능
공유 라이브러리를 생성합니다. 이 기능은 현재 ELF에서만 지원됩니다.
XCOFF 및 SunOS 플랫폼. SunOS에서는 링커가 자동으로
공유 라이브러리를 생성하려면 -e 옵션이 사용되지 않으며
링크에 정의되지 않은 기호가 있습니다.
--정렬-공통
--sort-common=오름차순
--sort-common=내림차순
이 옵션은 ld 정렬을 기준으로 공통 기호를 정렬하려면
오름차순 또는 내림차순으로 배치합니다.
적절한 출력 섹션. 고려되는 기호 정렬은 다음과 같습니다.
16바이트 이상, 8바이트, 4바이트, 2바이트 및 1바이트
바이트. 이는 정렬로 인해 심볼 사이에 간격이 생기는 것을 방지하기 위한 것입니다.
제약 조건. 정렬 순서가 지정되지 않으면 내림차순으로 정렬됩니다.
순서가 가정됩니다.
--sort-section=이름
이 옵션은 모든 와일드카드 섹션에 "SORT_BY_NAME"을 적용합니다.
링커 스크립트의 패턴.
--sort-section=정렬
이 옵션은 모든 와일드카드 섹션에 "SORT_BY_ALIGNMENT"를 적용합니다.
링커 스크립트의 패턴.
--파일별로 분할[=크기]
유사하게 --재할당으로 분할 하지만 새로운 출력 섹션을 생성합니다.
각 입력 파일 크기 에 도달했습니다. 크기 기본값은 1입니다
주어지지 않으면.
--재지정별 분할[=계산]
출력 파일에 추가 섹션을 생성하려고 시도하여
파일의 단일 출력 섹션에 다음이 포함되어 있습니다. 계산
재배치. 이는 대용량 재배치 가능 파일을 생성할 때 유용합니다.
COFF 객체를 사용하여 특정 실시간 커널에 다운로드하기 위해
파일 형식; COFF는 65535 이상을 표현할 수 없기 때문에
단일 섹션의 재배치. 이 기능은 작동하지 않습니다.
임의의 섹션을 지원하지 않는 개체 파일 형식이 있습니다.
링커는 개별 입력 섹션을 분할하지 않습니다.
재분배, 즉 단일 입력 섹션에 다음보다 많은 항목이 포함된 경우
계산 재배치하면 하나의 출력 섹션에 해당 개수가 포함됩니다.
재배치. 계산 기본값은 32768입니다.
--통계
링커의 작동에 대한 통계를 계산하고 표시합니다.
예를 들어 실행 시간, 메모리 사용량 등입니다.
--sysroot=예배 규칙서
예배 규칙서 sysroot의 위치로 재정의
configure-time 기본값입니다. 이 옵션은 링커에서만 지원됩니다.
를 사용하여 구성된 --sysroot와 함께.
--전통 형식
일부 대상의 경우 출력 ld 어떤 면에서는 다르다
기존 링커의 출력입니다. 이 스위치는 다음을 요청합니다. ld 사용
대신 전통적인 형식을 사용합니다.
예를 들어 SunOS에서 ld 기호에 중복된 항목을 결합합니다.
문자열 테이블입니다. 이렇게 하면 전체 출력 파일의 크기를 줄일 수 있습니다.
디버깅 정보가 30% 이상 감소했습니다. 안타깝게도 SunOS는
"dbx" 프로그램은 결과 프로그램을 읽을 수 없습니다("gdb"에는 없음)
문제). --전통 형식 스위치가 알려줍니다 ld 결합하지 않기 위해
중복 항목.
--섹션 시작=섹션 이름=조직
출력 파일에서 주어진 절대 주소의 섹션을 찾습니다.
by 조직. 필요한 만큼 이 옵션을 사용할 수 있습니다.
명령줄에서 여러 섹션을 찾습니다. 조직 싱글이어야 한다
16진수 정수; 다른 링커와의 호환성을 위해 다음을 수행할 수 있습니다.
앞부분을 생략하다 0x 일반적으로 XNUMX진수 값과 연결됩니다.
참고 : 사이에 공백이 없어야 합니다. 섹션 이름Walk Through California 프로그램,
등호("="), 그리고 조직.
-Tbss=조직
-데이터=조직
-문자=조직
과 동일 --섹션 시작, ".bss", ".data" 또는 ".text"를
섹션 이름.
-Ttext-세그먼트=조직
ELF 실행 파일을 생성할 때 다음 주소가 설정됩니다.
텍스트 세그먼트의 첫 번째 바이트.
-트로데이터 세그먼트=조직
대상에 대한 ELF 실행 파일이나 공유 객체를 생성할 때
읽기 전용 데이터는 별도의 세그먼트에 있습니다.
실행 가능한 텍스트의 경우 첫 번째 바이트의 주소를 설정합니다.
읽기 전용 데이터 세그먼트.
-Tldata-세그먼트=조직
x86-64 매체에 대한 ELF 실행 파일이나 공유 객체를 생성할 때
메모리 모델에서는 첫 번째 바이트의 주소를 설정합니다.
ldata 세그먼트.
--해결되지 않은 기호=방법
해결되지 않은 심볼을 처리하는 방법을 결정합니다. 네 가지가 있습니다.
가능한 값 방법:
전부다 무시해라
해결되지 않은 기호를 보고하지 마십시오.
모두 보고하다
해결되지 않은 모든 기호를 보고합니다. 이것이 기본값입니다.
개체 파일에서 무시
공유에 포함된 해결되지 않은 심볼을 보고합니다.
라이브러리이지만 일반 객체에서 나온 경우 무시합니다.
파일.
공유 라이브러리 무시
일반 개체 파일에서 나오는 해결되지 않은 심볼을 보고합니다.
하지만 공유 라이브러리에서 가져온 경우에는 무시하세요.
동적 바이너리를 생성할 때 유용하며 다음이 알려져 있습니다.
참조해야 하는 모든 공유 라이브러리는 다음과 같습니다.
링커의 명령줄에 포함됩니다.
공유 라이브러리의 자체 동작도 다음과 같습니다.
에 의해 제어 --[no-]allow-shlib-정의되지 않음 옵션을 선택합니다.
일반적으로 링커는 각각에 대해 오류 메시지를 생성합니다.
해결되지 않은 심볼이 보고되었지만 옵션 --경고-미해결-기호
경고로 변경할 수 있습니다.
--dll-상세
--장황한[=NUMBER]
에 대한 버전 번호 표시 ld 그리고 링커 에뮬레이션을 나열합니다
지원됨. 어떤 입력 파일을 열 수 있고 열 수 없는지 표시합니다.
링커에서 사용 중인 링커 스크립트를 표시합니다. 선택 사항인 경우
NUMBER 인수 > 1, 플러그인 심볼 상태도 표시됩니다.
--버전 스크립트=버전 스크립트 파일
링커에 버전 스크립트의 이름을 지정합니다.
일반적으로 공유 라이브러리를 생성할 때 추가 지정을 위해 사용됩니다.
라이브러리의 버전 계층에 대한 정보
생성되었습니다. 이 옵션은 ELF 플랫폼에서만 완벽하게 지원됩니다.
공유 라이브러리를 지원하는 것을 참조하세요. 버전. 부분적으로입니다
PE 플랫폼에서 지원되며 버전 스크립트를 사용하여 필터링할 수 있습니다.
자동 내보내기 모드에서의 기호 표시: 표시된 모든 기호 지방의 in
버전 스크립트는 내보내지지 않습니다.
--경고-공통
공통 기호가 다른 공통 기호와 결합될 때 경고합니다.
심볼 정의를 사용합니다. 유닉스 링커는 이러한 다소 엉성한
연습이지만 다른 일부 운영 체제의 링커는 그렇지 않습니다.
옵션을 사용하면 글로벌을 결합하여 잠재적인 문제를 찾을 수 있습니다.
기호입니다. 불행히도 일부 C 라이브러리는 이 관행을 사용하므로
라이브러리의 심볼에 대한 경고가 나타날 수도 있습니다.
귀하의 프로그램.
C로 표시된 세 가지 유형의 글로벌 심볼이 있습니다.
예 :
INT i = 1;
초기화된 데이터 섹션에 정의가 들어갑니다.
결과물 파일.
외부 INT i;
공간을 할당하지 않는 정의되지 않은 참조입니다.
변수에 대한 정의이거나 공통 기호여야 합니다.
어딘가에.
INT i;
공통 기호. 공통 기호가 하나 이상 있는 경우
변수에 대한 기호는 초기화되지 않은 데이터 영역에 들어갑니다.
출력 파일의. 링커는 여러 개의 공통 심볼을 병합합니다.
동일한 변수에 대해 단일 기호로 변환합니다.
크기가 다르면 가장 큰 크기를 선택합니다. 링커는
정의가 있는 경우 공통 기호를 선언으로 변환합니다.
같은 변수.
The --경고-공통 옵션은 다섯 가지 종류의 경고를 생성할 수 있습니다. 각 경고는
경고는 두 줄로 구성됩니다. 첫 번째 줄은 기호를 설명합니다.
방금 마주친 것과 두 번째는 이전 기호를 설명합니다.
같은 이름으로 발견되었습니다. 두 기호 중 하나 또는 둘 다
공통적인 상징이 될 것이다.
1. 공통 기호를 참조로 전환하는 것은 다음과 같습니다.
이미 기호에 대한 정의가 있습니다.
( ): 경고: `의 공통 '
정의에 의해 재정의됨
( ): 경고: 여기에 정의됨
2. 공통 기호를 참조로 전환하는 것은 나중에
기호에 대한 정의가 발견되었습니다. 이는 다음과 같습니다.
이전 사례와 달리 기호는 다음과 같습니다.
다른 순서.
( ): 경고: `의 정의 '
우선 공통
( ): 경고: 공통이 여기에 있습니다.
3. 공통 기호를 이전에 같은 크기의 공통 기호와 병합
상징.
( ): 경고: 다중 공통
`의 '
( ): 경고: 이전 공통이 여기에 있습니다.
4. 공통 심볼을 이전의 더 큰 공통 심볼과 병합합니다.
( ): 경고: `의 공통 '
더 큰 공통으로 재정의됨
( ): 경고: 더 큰 공통이 여기에 있습니다.
5. 기존의 작은 공통 기호와 기존의 공통 기호를 병합합니다.
이는 이전 사례와 동일하지만 기호는 다음과 같습니다.
다른 순서로 발생합니다.
( ): 경고: `의 공통 '
더 작은 공통 재정의
( ): 경고: 더 작은 공통이 여기에 있습니다.
--warn-생성자
전역 생성자가 사용되는 경우 경고합니다. 이는 다음에만 유용합니다.
몇 가지 객체 파일 형식. COFF 또는 ELF와 같은 형식의 경우
링커가 전역 생성자의 사용을 감지할 수 없습니다.
--warn-다중-gp
출력에 여러 개의 글로벌 포인터 값이 필요한 경우 경고합니다.
파일입니다. 이것은 다음과 같은 특정 프로세서에만 의미가 있습니다.
알파. 특히 일부 프로세서는 큰 값의 상수를 넣습니다.
특수 섹션. 특수 레지스터(전역 포인터)는 다음을 가리킵니다.
이 섹션의 중간에 상수를 로드할 수 있도록 합니다.
베이스 레지스터 상대 주소 지정 모드를 통해 효율적으로.
베이스 레지스터 상대 모드에서 오프셋은 고정되어 상대적으로
작은 크기(예: 16비트)는 상수의 최대 크기를 제한합니다.
풀. 따라서 대규모 프로그램에서는 종종 다음을 사용해야 합니다.
모든 것을 처리할 수 있도록 여러 개의 글로벌 포인터 값을 사용합니다.
가능한 상수입니다. 이 옵션을 사용하면 경고가 발생합니다.
이런 사건이 발생할 때마다.
--경고-한 번
정의되지 않은 각 심볼에 대해 한 번만 경고합니다.
이를 참조하는 모듈입니다.
--경고 섹션 정렬
출력 섹션의 주소가 변경되면 경고합니다.
정렬. 일반적으로 정렬은 입력에 의해 설정됩니다.
섹션. 주소는 명시적으로 변경되지 않는 경우에만 변경됩니다.
지정된 경우, 즉 "SECTIONS" 명령이 지정하지 않은 경우
섹션의 시작 주소입니다.
--warn-shared-textrel
링커가 공유 개체에 DT_TEXTREL을 추가하면 경고합니다.
--경고-대체-em
개체에 대체 ELF 기계어 코드가 있으면 경고합니다.
--경고-미해결-기호
링커가 해결되지 않은 심볼을 보고하려는 경우(참조)
option --해결되지 않은 기호) 일반적으로 오류가 발생합니다.
대신 이 옵션을 선택하면 경고가 생성됩니다.
--오류-해결되지 않은-기호
이렇게 하면 링커의 기본 오류 생성 동작이 복원됩니다.
해결되지 않은 심볼을 보고하는 경우.
--전체 아카이브
다음 명령줄에 언급된 각 아카이브에 대해
--전체 아카이브 옵션, 아카이브의 모든 개체 파일을 포함합니다.
필요한 객체를 아카이브에서 검색하는 것보다 링크를 사용하는 것이 좋습니다.
파일. 이것은 일반적으로 보관 파일을 공유 파일로 변환하는 데 사용됩니다.
라이브러리, 모든 객체를 결과에 포함하도록 강제합니다.
공유 라이브러리입니다. 이 옵션은 여러 번 사용할 수 있습니다.
gcc에서 이 옵션을 사용할 때 두 가지 참고 사항: 첫째, gcc는 다음을 알지 못합니다.
이 옵션에 대해서는 다음을 사용해야 합니다. -Wl,-전체 아카이브. 둘째,
사용하는 것을 잊지 마세요 -Wl,-no-전체 아카이브 당신의 목록 뒤에
아카이브는 gcc가 자체 아카이브 목록을 추가하기 때문에
링크를 클릭해서 이 플래그가 다른 링크에도 영향을 미치지 않도록 할 수도 있습니다.
--랩=상징
래퍼 함수 사용 상징. 정의되지 않은 참조
상징 "__wrap_"로 해결됩니다.상징". 정의되지 않은 모든
"__real_에 대한 참조상징" 로 해결됩니다 상징.
이는 시스템 기능에 대한 래퍼를 제공하는 데 사용될 수 있습니다.
래퍼 함수는 "__wrap_"라고 불려야 합니다.상징". 원하신다면
시스템 함수를 호출하려면 "__real_"을 호출해야 합니다.상징".
다음은 간단한 예입니다.
무효의 *
__wrap_malloc(크기_t c)
{
printf("malloc이 %zu로 호출되었습니다\n", c);
반환 __real_malloc(c);
}
다음을 사용하여 이 파일에 다른 코드를 연결하는 경우 --포장하다 Malloc, 다음 모두
"malloc"을 호출하면 대신 "__wrap_malloc" 함수가 호출됩니다.
"__wrap_malloc"에서 "__real_malloc"를 호출하면 실제
"malloc" 함수.
"__real_malloc" 함수도 제공할 수 있습니다.
링크가 없는 --포장하다 옵션이 성공합니다. 이렇게 하면
"__real_malloc" 정의를 같은 파일에 넣으면 안 됩니다.
"__wrap_malloc"로 설정하면 어셈블러가 호출을 해결할 수 있습니다.
링커가 "malloc"으로 래핑할 기회를 갖기 전에.
--eh-프레임-hdr
".eh_frame_hdr" 섹션 및 ELF 생성 요청
"PT_GNU_EH_FRAME" 세그먼트 헤더.
--no-ld-생성-해제-정보
링커 생성을 위한 ".eh_frame" 풀림 정보 생성 요청
PLT와 같은 코드 섹션. 이 옵션은 링커가 기본적으로 활성화되어 있는 경우
생성된 풀림 정보가 지원됩니다.
--enable-new-dtags
--disable-new-dtags
이 링커는 ELF에서 새로운 동적 태그를 생성할 수 있습니다. 하지만 이전
ELF 시스템에서는 이를 인식하지 못할 수 있습니다.
--enable-new-dtags, 새로운 동적 태그는 필요에 따라 생성됩니다.
이전 동적 태그는 생략됩니다. 지정하는 경우
--disable-new-dtags, 새로운 동적 태그가 생성되지 않습니다.
기본적으로 새 동적 태그는 생성되지 않습니다.
해당 옵션은 ELF 시스템에서만 사용할 수 있습니다.
--해시 크기=번호
링커 해시 테이블의 기본 크기를 소수로 설정합니다.
가까운 번호. 이 값을 늘리면 길이를 줄일 수 있습니다.
링커가 작업을 수행하는 데 걸리는 시간(비용)
링커의 메모리 요구 사항을 증가시킵니다. 마찬가지로
이 값은 메모리 요구 사항을 희생하여 줄일 수 있습니다.
속도.
--해시 스타일=스타일
링커의 해시 테이블 유형을 설정합니다. 스타일 "sysv"가 될 수 있습니다
클래식 ELF의 ".hash" 섹션, 새로운 스타일의 GNU의 "gnu" 섹션
".gnu.hash" 섹션 또는 클래식 ELF ".hash" 및 "both" 섹션
새로운 스타일의 GNU ".gnu.hash" 해시 테이블입니다. 기본값은 "sysv"입니다.
--compress-debug-sections=없음
--압축-디버그-섹션=zlib
--압축-디버그-섹션=zlib-gnu
--압축-디버그-섹션=zlib-gabi
ELF 플랫폼에서 이러한 옵션은 DWARF 디버그 섹션을 제어하는 방법을 제어합니다.
zlib을 사용하여 압축됩니다. --compress-debug-sections=없음 하지 않습니다
DWARF 디버그 섹션을 압축합니다. --압축-디버그-섹션=zlib-gnu
DWARF 디버그 섹션을 압축하고 디버그 섹션 이름을 다음으로 변경합니다.
시작하다 .z디버그 대신 .디버그.
--압축-디버그-섹션=zlib 그리고
--압축-디버그-섹션=zlib-gabi DWARF 디버그 섹션 압축
ELF ABI의 SHF_COMPRESSED를 사용합니다. 기본 동작은 다양합니다.
관련 대상과 사용된 구성 옵션에 따라
툴체인을 빌드합니다. 기본값은 다음을 검사하여 확인할 수 있습니다.
링커의 출력 --도움 옵션을 선택합니다.
--메모리 오버헤드 감소
이 옵션은 ld 런타임 시 메모리 요구 사항을 줄입니다.
연결 속도의 비용. 이는 이전
새로운 것이 아닌 링크 맵 파일 생성을 위한 O(n^2) 알고리즘
심볼 저장에 약 40% 더 많은 메모리를 사용하는 O(n) 알고리즘입니다.
스위치의 또 다른 효과는 기본 해시 테이블 크기를 설정하는 것입니다.
1021로 다시 확장하면 메모리가 절약되지만 길이가 길어집니다.
링커의 런타임. 그러나 이것은 수행되지 않습니다. --해시 크기
스위치가 사용되었습니다.
The --메모리 오버헤드 감소 스위치는 또한 활성화하는 데 사용될 수 있습니다
링커의 향후 버전에서는 다른 균형점이 적용됩니다.
--빌드 아이디
--빌드 아이디=스타일
".note.gnu.build-id" ELF 노트 섹션 생성을 요청하거나
".buildid" COFF 섹션입니다. 메모의 내용은 고유합니다.
이 링크된 파일을 식별하는 비트입니다. 스타일 128을 사용하려면 "uuid"를 사용할 수 있습니다.
난수 비트, "sha1"은 표준에 160비트 SHA1 해시를 사용합니다.
출력 내용의 일부인 "md5"는 128비트 MD5 해시를 사용합니다.
출력 내용의 규범적인 부분 또는 "0x육각 문자열" 사용
16진수의 짝수로 지정된 선택된 비트 문자열
숫자(숫자 쌍 사이의 "-" 및 ":" 문자는 무시됨).
If 스타일 생략하면 "sha1"이 사용됩니다.
"md5" 및 "sha1" 스타일은 항상 다음과 같은 식별자를 생성합니다.
동일한 출력 파일에서는 동일하지만 모든 파일에서 고유합니다.
동일하지 않은 출력 파일입니다. 비교 대상으로 삼지 않았습니다.
파일 내용에 대한 체크섬입니다. 연결된 파일은 변경될 수 있습니다.
나중에 다른 도구에 의해 생성되지만 빌드 ID 비트 문자열은 다음을 식별합니다.
원래 링크된 파일은 변경되지 않습니다.
"없음" 전달 스타일 "--build-id"에서 설정을 비활성화합니다.
명령줄에서 이전에 사용했던 옵션입니다.
i386 PE 링커는 다음을 지원합니다. -공유 출력을 발생시키는 옵션
일반적인 DLL 대신 동적 연결 라이브러리(DLL)가 됩니다.
실행 파일입니다. 이 파일을 사용할 때는 출력 파일 이름을 "*.dll"로 지정해야 합니다.
옵션입니다. 또한, 링커는 표준 "*.def"를 완벽하게 지원합니다.
링커 명령줄에서 객체처럼 지정할 수 있는 파일
파일(실제로는 심볼을 내보내는 아카이브보다 앞서야 함)
(일반적인 개체 파일과 마찬가지로 링크가 연결되도록 하세요).
모든 대상에 공통적인 옵션 외에도 i386 PE 링커
i386에 특정한 추가 명령줄 옵션을 지원합니다.
PE 목표. 가치를 가지는 옵션은 가치와 분리될 수 있습니다.
공백이나 등호를 사용하여 입력하세요.
--추가-stdcall-별칭
주어진 경우 stdcall 접미사가 있는 기호(@nn)로 내보내집니다.
이며 접미사가 제거된 상태입니다. [이 옵션은 다음에만 해당됩니다.
링커의 i386 PE 대상 포트]
--베이스 파일 파일
파일 기본 주소를 저장할 파일의 이름으로
DLL을 생성하는 데 필요한 모든 재배치 DLL 도구.
[이것은 i386 PE 특정 옵션입니다]
--dll
일반 실행 파일 대신 DLL을 만듭니다. 당신은 또한 사용할 수 있습니다
-공유 또는 주어진 ".def" 파일에 "LIBRARY"를 지정합니다. [이
옵션은 링커의 i386 PE 대상 포트에 따라 다릅니다.]
--활성화 긴 섹션 이름
--비활성화 긴 섹션 이름
COFF 개체 형식의 PE 변형은 확장을 추가합니다.
8자 이상의 섹션 이름 사용을 허용합니다.
COFF에 대한 일반 제한입니다. 기본적으로 이러한 이름은 다음에서만 허용됩니다.
완전히 링크된 실행 가능 이미지에는 개체 파일이 없으므로
긴 이름을 지원하려면 COFF 문자열 테이블이 필요합니다. GNU
확장자를 사용하면 실행 가능한 이미지에서 사용할 수 있습니다.
또한, 또는 (아마도 무의미하게!) 객체에서 그것을 허용하지 않습니다.
이 두 옵션을 사용하여 파일을 생성합니다. 실행 이미지가 생성됩니다.
이러한 긴 섹션 이름은 약간 비표준적이며
문자열 테이블을 작성하고 혼란스러운 출력을 생성할 수 있습니다.
파일 뷰어와 같은 GNU PE 인식 도구가 아닌 도구로 검사됨
덤퍼. 그러나 GDB는 PE 긴 섹션 이름 사용에 의존합니다.
실행 가능 이미지에서 Dwarf-2 디버그 정보 섹션을 찾으려면
런타임에, 따라서 명령에 두 옵션 모두 지정되지 않은 경우
선, ld 긴 섹션 이름을 활성화하고 기본값을 재정의합니다.
디버그가 존재하는 경우 기술적으로 올바른 동작입니다.
실행 가능한 이미지를 연결하고 스트리핑하지 않는 동안 정보
기호. [이 옵션은 모든 PE 대상 포트에 유효합니다.
링커]
--enable-stdcall-fixup
--disable-stdcall-fixup
링크가 해결할 수 없는 심볼을 찾으면 다음을 시도합니다.
정의된 다른 심볼을 찾아 "퍼지 연결"을 수행합니다.
심볼 이름의 형식만 다릅니다(cdecl 대 stdcall)
그리고 해당 심볼을 매치되는 심볼에 연결하여 확인합니다. 예를 들어,
정의되지 않은 기호 "_foo"가 함수에 연결될 수 있습니다.
"_foo@12" 또는 정의되지 않은 기호 "_bar@16"이 다음에 연결될 수 있습니다.
함수 "_bar"를 사용합니다. 링커가 이 함수를 호출하면 경고가 출력됩니다.
일반적으로 링크에 실패해야 하지만 가끔 가져오기 때문에
타사 DLL에서 생성된 라이브러리에는 이 기능이 필요할 수 있습니다.
사용할 수 있습니다. 지정하는 경우 --enable-stdcall-fixup, 이 기능은
완전히 활성화되어 있고 경고가 인쇄되지 않습니다. 지정하는 경우
--disable-stdcall-fixup, 이 기능은 비활성화되어 있습니다.
불일치는 오류로 간주됩니다. [이 옵션은 특정
링커의 i386 PE 대상 포트로]
--선행 밑줄
--앞에 밑줄 없음
대부분의 대상의 기본 기호 접두사는 밑줄이며
대상 설명에 정의되어 있습니다. 이 옵션을 사용하면
기본 밑줄 기호 접두사를 비활성화/활성화합니다.
--내보내기-모든 기호
주어진 경우 DLL을 빌드하는 데 사용되는 객체의 모든 글로벌 심볼
DLL에서 내보내집니다. 이것이 기본값이라는 점에 유의하세요.
그렇지 않으면 내보낸 심볼이 없습니다. 심볼이
DEF 파일을 통해 명시적으로 내보내거나 암시적으로 내보내짐
함수 속성의 경우 기본값은 다른 것을 내보내지 않는 것입니다.
이 옵션이 지정되지 않은 경우입니다. "DllMain@12" 심볼은
"DllEntryPoint@0", "DllMainCRTStartup@12" 및 "impure_ptr"이
자동으로 내보내지지 않습니다. 또한 다른 곳에서 가져온 심볼도
DLL은 다시 내보내지지 않으며 DLL을 지정하는 기호도 다시 내보내지지 않습니다.
"_head_"로 시작하거나 끝나는 것과 같은 내부 레이아웃
"_iname"을 사용합니다. 또한 "libgcc", "libstd++"의 심볼은 사용할 수 없습니다.
"libmingw32" 또는 "crtX.o"가 내보내집니다. 이름이
"__rtti_" 또는 "__builtin_"으로 시작하는 항목은 내보내지지 않습니다.
C++ DLL을 사용합니다. 마지막으로, cygwin-
내보내지지 않는 개인 심볼(분명히 이것은 다음에 적용됩니다.
(cygwin 대상 DLL을 빌드할 때) 이러한 cygwin 제외 항목은 다음과 같습니다.
"_cygwin_dll_entry@12", "_cygwin_crt0_common@8",
"_cygwin_noncygwin_dll_entry@12", "_fmode", "_impure_ptr",
"cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1",
"cygwin_premain2", "cygwin_premain3" 및 "environ". [이 옵션은
링커의 i386 PE 대상 포트에만 해당됩니다.]
--exclude-기호 상징,상징, ...
자동으로 추가되지 않아야 하는 기호 목록을 지정합니다.
내보내짐. 기호 이름은 쉼표나 콜론으로 구분할 수 있습니다.
[이 옵션은 i386 PE 대상 포트에만 적용됩니다.
링커]
--모든 기호 제외
자동으로 내보내지지 않는 기호를 지정합니다. [이
옵션은 링커의 i386 PE 대상 포트에 따라 다릅니다.]
--파일 정렬
파일 정렬을 지정합니다. 파일의 섹션은 항상
이 숫자의 배수인 파일 오프셋에서. 기본값은 다음과 같습니다.
512로. [이 옵션은 i386 PE 대상 포트에만 해당됩니다.
링커]
--더미 비축
--더미 비축,범하다
예약할 메모리 바이트 수를 지정합니다(선택 사항)
이 프로그램의 힙으로 사용할 커밋입니다. 기본값은 1MB입니다.
예약됨, 4K 커밋됨. [이 옵션은 i386 PE에만 해당됩니다.
링커의 대상 포트]
--이미지 기반 가치
가치 프로그램이나 DLL의 기본 주소로 사용합니다.
프로그램이나 DLL이 사용될 가장 낮은 메모리 위치
로드되었습니다. 이전 필요성을 줄이고 성능을 개선하려면
각 DLL에는 고유한 기본 주소가 있어야 하며
다른 DLL과 겹치지 않도록 합니다. 실행 파일의 기본값은 0x400000입니다.
dll의 경우 0x10000000입니다. [이 옵션은 i386 PE에만 해당됩니다.
링커의 대상 포트]
--죽이다
주어진 경우 stdcall 접미사(@nn)는 기호에서 제거됩니다
내보내기 전에. [이 옵션은 i386 PE에만 해당됩니다.
링커의 대상 포트]
--큰 주소 인식
주어진 경우 "특성" 필드의 적절한 비트
COFF 헤더는 이 실행 파일이 다음을 지원함을 나타내도록 설정됩니다.
2기가바이트보다 큰 가상 주소입니다. 이 주소는 다음에서 사용해야 합니다.
/3GB 또는 /USERVA=와 함께 사용가치 메가바이트가 전환됩니다
BOOT.INI의 "[운영 체제]" 섹션입니다. 그렇지 않으면 이 비트
효과가 없습니다. [이 옵션은 PE 대상 포트에만 해당됩니다.
링커]
--비활성화-대형 주소 인식
이전 효과를 되돌립니다. --큰 주소 인식 옵션을 선택합니다.
이것은 다음과 같은 경우에 유용합니다. --큰 주소 인식 항상 다음에 의해 설정됩니다
컴파일러 드라이버(예: Cygwin gcc) 및 실행 파일이 없습니다.
2기가바이트 이상의 가상 주소를 지원합니다. [이 옵션은
링커의 PE 대상 포트에만 해당]
--주요 이미지 버전 가치
"이미지 버전"의 주 번호를 설정합니다. 기본값은 1입니다.
[이 옵션은 i386 PE 대상 포트에만 적용됩니다.
링커]
--주요 운영 체제 버전 가치
"OS 버전"의 주요 번호를 설정합니다. 기본값은 4입니다. [이
옵션은 링커의 i386 PE 대상 포트에 따라 다릅니다.]
--주요 하위 시스템 버전 가치
"서브시스템 버전"의 주 번호를 설정합니다. 기본값은 4입니다.
[이 옵션은 i386 PE 대상 포트에만 적용됩니다.
링커]
--부 이미지 버전 가치
"이미지 버전"의 부 버전 번호를 설정합니다. 기본값은 0입니다.
[이 옵션은 i386 PE 대상 포트에만 적용됩니다.
링커]
--부 OS 버전 가치
"OS 버전"의 마이너 번호를 설정합니다. 기본값은 0입니다. [이
옵션은 링커의 i386 PE 대상 포트에 따라 다릅니다.]
--부-서브시스템-버전 가치
"서브시스템 버전"의 마이너 번호를 설정합니다. 기본값은 0입니다.
[이 옵션은 i386 PE 대상 포트에만 적용됩니다.
링커]
--출력 정의 파일
링커는 파일을 생성합니다. 파일 DEF 파일이 포함될 것입니다
링커가 생성하는 DLL에 해당합니다. 이 DEF 파일
(이것은 "*.def"라고 불려야 함)를 사용하여 가져오기를 생성할 수 있습니다.
"dlltool"을 사용하여 라이브러리를 만들거나 참조로 사용할 수 있습니다.
자동 또는 암시적으로 내보내는 기호입니다. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]
--out-implib 파일
링커는 파일을 생성합니다. 파일 여기에는 수입품이 포함될 것입니다
링커가 생성하는 DLL에 해당하는 lib입니다. 이 가져오기는
lib(이것은 "*.dll.a" 또는 "*.a"라고 불려야 하며 링크하는 데 사용될 수 있습니다.
생성된 DLL에 대한 클라이언트; 이 동작으로 인해 가능해집니다.
별도의 "dlltool" 가져오기 라이브러리 생성 단계를 건너뜁니다. [이
옵션은 링커의 i386 PE 대상 포트에 따라 다릅니다.]
--자동 이미지 기반 활성화
--자동 이미지 기반 활성화=가치
DLL에 대한 이미지 기반을 자동으로 선택하고 선택적으로 시작합니다.
베이스 포함 가치"--image-base"를 사용하여 지정하지 않는 한
인수. dllname에서 생성된 해시를 사용하여
각 DLL에 대한 고유한 이미지 기반, 메모리 내 충돌 및
프로그램 실행을 지연시킬 수 있는 재배치는 방지됩니다. [이
옵션은 링커의 i386 PE 대상 포트에 따라 다릅니다.]
--disable-auto-image-base
고유한 이미지 기반을 자동으로 생성하지 마십시오.
사용자가 지정한 이미지 기반("--image-base")을 선택한 다음 플랫폼을 사용합니다.
기본값. [이 옵션은 i386 PE 대상 포트에만 해당됩니다.
링커]
--dll 검색 접두어 현
가져오기 라이브러리 없이 DLL에 동적으로 링크하는 경우 검색
을 위한 " "lib" 대신 ".dll"을 사용하세요. .dll"입니다.
이 동작을 통해 빌드된 DLL을 쉽게 구별할 수 있습니다.
다양한 "하위 플랫폼": 네이티브, Cygwin, UWIN, PW 등.
예를 들어, cygwin DLL은 일반적으로 "--dll-search-prefix=cyg"를 사용합니다.
[이 옵션은 i386 PE 대상 포트에만 적용됩니다.
링커]
--자동 가져오기 사용
DATA에 대해 "_symbol"을 "__imp__symbol"로 정교하게 연결합니다.
DLL에서 가져오고 필요한 씽킹 심볼을 생성합니다.
해당 DATA 내보내기를 사용하여 가져오기 라이브러리를 빌드합니다. 참고: 사용
'자동 가져오기' 확장 기능은 텍스트 섹션을 발생시킵니다.
이미지 파일을 쓰기 가능하게 만들어야 합니다. 이는 PE-
Microsoft에서 발표한 COFF 형식 사양입니다.
참고 - '자동 가져오기' 확장 프로그램을 사용하면 읽기 전용이 됩니다.
일반적으로 .rdata 섹션에 배치되는 데이터
대신 .data 섹션에 배치합니다. 이는 작동하기 위한 것입니다.
여기에 설명된 const 관련 문제에 대한 해결책:
http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
'자동 가져오기'를 사용하면 일반적으로 '그냥 작동합니다' -- 하지만 때로는
이 메시지가 표시될 수 있습니다:
"변수 ' '은(는) 자동으로 가져올 수 없습니다. 다음을 읽어보세요.
자세한 내용은 ld의 "--enable-auto-import"에 대한 설명서를 참조하세요.
이 메시지는 일부 (하위) 표현식이 주소에 액세스할 때 발생합니다.
궁극적으로 두 상수의 합으로 주어짐(Win32 가져오기 테이블)
하나만 허용). 이러한 상황이 발생할 수 있는 인스턴스에는 액세스가 포함됩니다.
DLL에서 가져온 구조체 변수의 멤버 필드에도
배열 변수에 상수 인덱스를 사용하여 가져온 것과 같이
DLL. 다중 단어 변수(배열, 구조체, long long 등)는
이 오류 조건을 트리거합니다. 그러나 정확한
문제가 있는 내보낸 변수의 데이터 유형, ld는 항상 감지합니다.
그러면 경고를 내리고 종료합니다.
이 어려움을 해결하는 방법은 여러 가지가 있습니다.
내보낸 변수의 데이터 유형:
한 가지 방법은 --enable-runtime-pseudo-reloc 스위치를 사용하는 것입니다. 이렇게 하면
런타임을 위해 클라이언트 코드에서 참조를 조정하는 작업
환경이므로 이 방법은 런타임 환경에서만 작동합니다.
이 기능을 지원합니다.
두 번째 해결책은 '상수' 중 하나를 강제로 지정하는 것입니다.
변수 -- 즉, 컴파일 시점에는 알려지지 않았고 최적화할 수 없습니다.
배열의 경우 두 가지 가능성이 있습니다. a) 인덱싱 대상(
배열의 주소)를 변수로 지정하거나 b) '상수' 인덱스를 지정합니다.
변수. 따라서:
외부 유형 extern_array[];
extern_array[1] -->
{ 휘발성 유형 *t=extern_array; t[1] }
or
외부 유형 extern_array[];
extern_array[1] -->
{ 휘발성 정수 t=1; 외부 배열[t] }
구조체(및 대부분의 다른 다중 단어 데이터 유형)의 경우 유일한 옵션은 다음과 같습니다.
구조체 자체(또는 long long, 또는 ...)를 만드는 것입니다.
변하기 쉬운:
extern 구조체 extern_struct;
extern_struct.field -->
{ 휘발성 구조체 *t=&extern_struct; t->필드 }
or
외부 긴 긴 extern_ll;
extern_ll -->
{ 휘발성 long long * local_ll=&extern_ll; *local_ll }
이 어려움을 해결하는 세 번째 방법은 포기하는 것입니다.
문제가 있는 기호에 대해 '자동 가져오기'를 수행하고 표시하십시오.
"__declspec(dllimport)". 그러나 실제로는 다음을 사용해야 합니다.
DLL을 빌드하는지 여부를 나타내는 컴파일 시간 #define
DLL에 연결될 클라이언트 코드를 빌드하거나
정적 라이브러리를 빌드/링크하는 경우. 선택을 할 때
'직접 주소'를 해결하는 다양한 방법 사이에서
상수 오프셋' 문제를 해결하려면 일반적인 현실 세계를 고려해야 합니다.
용법:
실물:
--foo.h
외부 정수 [];
--foo.c
# "foo.h" 포함
무효 메인(int argc, char **argv){
printf("%d\n",arr[1]);
}
솔루션 1 :
--foo.h
외부 정수 [];
--foo.c
# "foo.h" 포함
무효 메인(int argc, char **argv){
/* 이 해결 방법은 win32 및 cygwin에 대한 것입니다. "최적화"하지 마십시오 */
휘발성 int *parr = arr;
printf("%d\n",parr[1]);
}
솔루션 2 :
--foo.h
/* 참고: 자동 내보내기가 가정됩니다(__declspec(dllexport) 없음) */
#if (정의(_WIN32) || 정의(__CYGWIN__)) && \
!(정의(FOO_BUILD_DLL) || 정의(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
#그밖에
#FOO_IMPORT 정의
#endif
extern FOO_IMPORT int arr[];
--foo.c
# "foo.h" 포함
무효 메인(int argc, char **argv){
printf("%d\n",arr[1]);
}
이 문제를 피하는 네 번째 방법은 라이브러리를 다시 코딩하는 것입니다.
데이터 인터페이스 대신 기능적 인터페이스를 사용합니다.
문제가 되는 변수(예: set_foo() 그리고 get_foo() 접근 자
기능). [이 옵션은 i386 PE 대상 포트에만 적용됩니다.
링커]
--비활성화 자동 가져오기
"_symbol"을 정교한 링크로 연결하려고 시도하지 마십시오.
DLL에서 DATA를 가져오는 경우 "__imp__symbol"을 사용합니다. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]
--활성화-런타임-의사-reloc
코드에 --enable-auto-import에 설명된 표현식이 포함되어 있는 경우
섹션, 즉 0이 아닌 오프셋을 사용하여 DLL에서 DATA를 가져오는 경우
스위치는 '런타임 가상 재배치' 벡터를 생성합니다.
런타임 환경에서 이러한 참조를 조정하는 데 사용할 수 있습니다.
클라이언트 코드의 데이터입니다. [이 옵션은 i386 PE에만 해당됩니다.
링커의 대상 포트]
--disable-runtime-의사-reloc
0이 아닌 오프셋 DATA 가져오기에 대해 가상 재배치를 생성하지 마십시오.
DLL에서. [이 옵션은 i386 PE 대상 포트에만 해당됩니다.
링커]
--extra-pe-debug 활성화
자동 가져오기 심볼 썽킹과 관련된 추가 디버그 정보를 표시합니다.
[이 옵션은 i386 PE 대상 포트에만 적용됩니다.
링커]
--섹션 정렬
섹션 정렬을 설정합니다. 메모리의 섹션은 항상 시작됩니다.
이 숫자의 배수인 주소에서. 기본값은 다음과 같습니다.
0x1000. [이 옵션은 i386 PE 대상 포트에만 해당됩니다.
링커]
--스택 비축
--스택 비축,범하다
예약할 메모리 바이트 수를 지정합니다(선택 사항)
이 프로그램의 스택으로 사용할 커밋(commit)입니다. 기본값은 2MB입니다.
예약됨, 4K 커밋됨. [이 옵션은 i386 PE에만 해당됩니다.
링커의 대상 포트]
--하위 시스템 어느
--하위 시스템 어느:주요한
--하위 시스템 어느:주요한.미성년자
프로그램이 실행될 하위 시스템을 지정합니다.
법적 값 어느 "네이티브", "윈도우", "콘솔", "포식스"입니다.
그리고 "xbox". 선택적으로 하위 시스템 버전도 설정할 수 있습니다.
숫자 값도 허용됩니다. 어느. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]
다음 옵션은 "DllCharacteristics" 필드에 플래그를 설정합니다.
PE 파일 헤더의: [이 옵션은 PE 대상에만 해당됩니다.
링커 포트]
--고엔트로피-va
이미지는 64비트 주소 공간 레이아웃 무작위화와 호환됩니다.
(ASLR).
--다이나믹베이스
이미지 기반 주소는 주소 공간 레이아웃을 사용하여 재배치될 수 있습니다.
무작위화(ASLR). 이 기능은 MS Windows에서 도입되었습니다.
i386 PE 타겟을 위한 Vista.
--강제 통합
코드 무결성 검사가 시행됩니다.
--nxcompat
이 이미지는 데이터 실행 방지(DEP)와 호환됩니다.
이 기능은 i2 PE 타겟을 위해 MS Windows XP SP386에서 도입되었습니다.
--분리 없음
이미지가 격리를 이해하더라도 이미지를 격리하지 마십시오.
--안돼
이미지는 SEH를 사용하지 않습니다. 이 이미지에서 SE 핸들러를 호출할 수 없습니다.
영상.
--바인드 없음
이 이미지를 묶지 마십시오.
--wdmdriver
드라이버는 MS Windows 드라이버 모델을 사용합니다.
--차와레
이미지는 터미널 서버를 인식합니다.
--삽입-타임스탬프
--no-insert-timestamp
이미지에 실제 타임스탬프를 삽입합니다. 이것이 기본값입니다.
레거시 코드와 일치하므로 이미지가 다음과 같은 동작을 의미합니다.
다른 독점 도구와도 호환됩니다. 이 도구의 문제점은
기본값은 약간 다른 이미지가 생성된다는 것입니다.
동일한 소스가 링크될 때마다 생성됩니다. 옵션
--no-insert-timestamp 0 값을 삽입하는 데 사용할 수 있습니다.
타임스탬프는 동일한 바이너리에서 생성된 것을 보장합니다.
출처는 동일하게 비교됩니다.
C6X uClinux 대상은 DSBT라는 바이너리 형식을 사용하여 지원합니다.
공유 라이브러리. 시스템의 각 공유 라이브러리에는 다음이 있어야 합니다.
고유 인덱스; 모든 실행 파일은 인덱스 0을 사용합니다.
--dsbt-크기 크기
이 옵션은 현재 DSBT의 항목 수를 설정합니다.
실행 파일 또는 공유 라이브러리 크기. 기본값은 다음을 만드는 것입니다.
64개 항목이 있는 표.
--dsbt-인덱스 색인
이 옵션은 현재 실행 파일이나 공유 파일의 DSBT 인덱스를 설정합니다.
도서관 색인기본값은 0이며 이는 다음에 적합합니다.
실행 파일 생성. 공유 라이브러리가 다음과 같이 생성되는 경우
DSBT 인덱스 0, "R_C6000_DSBT_INDEX" 재배치가 복사됩니다.
출력 파일.
The --병합-exidx 항목 없음 스위치는 병합을 비활성화합니다.
프레임 풀림 정보의 인접한 exidx 항목.
68HC11 및 68HC12 링커는 다음을 제어하기 위한 특정 옵션을 지원합니다.
메모리 뱅크 스위칭 매핑 및 트램펄린 코드 생성.
-- 트램펄린 없음
이 옵션은 트램펄린 생성을 비활성화합니다. 기본적으로
각 far 함수에 대해 트램펄린이 생성됩니다.
"jsr" 명령어(이것은 far 함수에 대한 포인터가 발생할 때 발생합니다.
(취득됨).
--은행 창구 name
이 옵션은 링커에게 메모리 영역의 이름을 표시합니다.
인간을 메모리 메모리 뱅크 창을 설명하는 사양입니다.
그런 지역의 정의는 링커에서 계산하는 데 사용됩니다.
메모리 창 내의 페이징 및 주소.
다음 옵션은 GOT 처리를 제어하기 위해 지원됩니다.
68K 타겟을 연결할 때 생성됨.
--있어=유형
이 옵션은 링커에 사용할 GOT 생성 체계를 알려줍니다.
유형 다음 중 하나여야 합니다. 단일, 부정, 다혈질 or 목표. 용
자세한 내용은 정보 항목을 참조하세요. ld.
다음 옵션은 microMIPS 명령어를 제어하기 위해 지원됩니다.
MIPS 타겟에 연결할 때 생성.
--insn32
--no-insn32
이러한 옵션은 사용되는 microMIPS 명령어의 선택을 제어합니다.
PLT나 지연 코드와 같이 링커에서 생성된 코드
바인딩 스텁 또는 이완 상태. --insn32 사용된 다음
링커는 32비트 명령어 인코딩만 사용합니다. 기본적으로 또는
--no-insn32 사용되면 다음을 포함한 모든 명령어 인코딩이 사용됩니다.
가능하면 16비트로.
환경
의 동작을 변경할 수 있습니다. ld 환경 변수로
"GNUTARGET", "LDEMULATION" 및 "COLLECT_NO_DEMANGLE".
"GNUTARGET"은 사용하지 않는 경우 입력 파일 개체 형식을 결정합니다. -b
(또는 동의어 --체재). 값은 BFD 이름 중 하나여야 합니다.
입력 형식에 대한 것입니다. 환경에 "GNUTARGET"이 없는 경우, ld
대상의 자연스러운 형식을 사용합니다. "GNUTARGET"이 설정된 경우
"기본"이면 BFD는 다음을 조사하여 입력 형식을 발견하려고 시도합니다.
이진 입력 파일; 이 방법은 종종 성공하지만 잠재적인 문제가 있습니다.
마법의 숫자를 보장하는 방법이 없기 때문에 모호함이 있습니다.
객체 파일 형식을 지정하는 데 사용되는 것은 고유합니다. 그러나
각 시스템의 BFD에 대한 구성 절차는 기존
검색 목록에서 해당 시스템의 형식이 먼저 나오므로 모호함이 없습니다.
협약에 찬성하여 결의됨.
"LDEMULATION"은 사용하지 않는 경우 기본 에뮬레이션을 결정합니다. -m
옵션. 에뮬레이션은 링커 동작의 다양한 측면에 영향을 미칠 수 있습니다.
특히 기본 링커 스크립트. 사용 가능한 항목을 나열할 수 있습니다.
에뮬레이션 --말 수가 많은 or -V 옵션. 만약 -m 옵션이 아닙니다
사용 중이고 "LDEMULATION" 환경 변수가 정의되지 않은 경우
기본 에뮬레이션은 링커가 구성된 방식에 따라 다릅니다.
일반적으로 링커는 기본적으로 기호를 디맹글링합니다. 그러나 만약
"COLLECT_NO_DEMANGLE"이 환경에 설정되어 있으면 기본값이 적용됩니다.
심볼을 디맹글링하지 않도록 합니다. 이 환경 변수는
"gcc" 링커 래퍼 프로그램에서도 비슷한 방식으로 작동합니다. 기본값은
에 의해 재정의되다 --demangle 그리고 -- 엉킴 없음 옵션을 제공합니다.
onworks.net 서비스를 사용하여 i686-linux-gnu-ld를 온라인으로 사용하세요