영어FrenchSpanish

서버 실행 | Ubuntu > | Fedora > |


온웍스 파비콘

i686-w64-mingw32-ld - 클라우드에서 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 i686-w64-mingw32-ld 실행

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 명령 i686-w64-mingw32-ld입니다.

프로그램:

이름


ld - GNU 링커

개요


ld [옵션] 개체 파일 ...

기술


ld 여러 개체 및 아카이브 파일을 결합하고 데이터를 재배치하고 기호를 묶습니다.
참조. 일반적으로 프로그램 컴파일의 마지막 단계는 다음을 실행하는 것입니다. ld.

ld AT&T 링크 편집기의 상위 집합으로 작성된 링커 명령 언어 파일을 허용합니다.
연결 프로세스에 대한 명시적이고 완전한 제어를 제공하는 명령 언어 구문.

이 매뉴얼 페이지에서는 명령 언어에 대해 설명하지 않습니다. 보다 ld 전체에 대한 "정보" 항목
명령 언어 및 GNU 링커의 다른 측면에 대한 세부 정보.

이 버전의 ld 범용 BFD 라이브러리를 사용하여 개체 파일에서 작동합니다. 이것
ld 다양한 형식의 개체 파일을 읽고, 결합하고, 쓰기 위해 ---
예: COFF 또는 "a.out". 서로 다른 형식을 함께 연결하여
사용 가능한 종류의 개체 파일입니다.

유연성 외에도 GNU 링커는 다른 링커보다
진단 정보. 많은 링커는 문제가 발생하면 즉시 실행을 포기합니다.
오류; 언제든지 가능할 때, ld 계속 실행하여 다른 오류를 식별할 수 있습니다.
(또는 어떤 경우에는 오류에도 불구하고 출력 파일을 얻기 위해).

GNU 링커 ld 광범위한 상황을 포괄하고 호환 가능해야 함을 의미합니다.
다른 링커와 가능한 한. 결과적으로 제어할 수 있는 많은 선택권이 있습니다.
행동.

옵션


링커는 수많은 명령줄 옵션을 지원하지만 실제로는 그 중 몇 가지가
특정 컨텍스트에서 사용됩니다. 예를 들어 자주 사용하는 ld 링크하는 것입니다
지원되는 표준 Unix 시스템의 표준 Unix 개체 파일. 그러한 시스템에서,
"hello.o" 파일 링크:

ld-o /lib/crt0.o hello.o -lc

이것은 말한다 ld 라는 파일을 생성하기 위해 출력 파일을 링크한 결과
"/lib/crt0.o"와 "hello.o" 및 라이브러리 "libc.a"(표준에서 가져옴)
검색 디렉토리. (의 토론 참조 -l 아래 옵션.)

몇 가지 명령줄 옵션은 ld 명령줄의 어느 지점에서나 지정할 수 있습니다.
그러나 다음과 같은 파일을 참조하는 옵션은 -l or -T, 파일을 다음 위치에서 읽도록 합니다.
개체 파일과 관련하여 명령줄에 옵션이 나타나는 지점
다른 파일 옵션. 다른 인수로 파일이 아닌 옵션을 반복하면
더 이상 영향을 미치지 않거나 이전 발생을 무시합니다(명령에서 더 왼쪽에 있는 항목
해당 옵션의 줄). 의미 있게 두 번 이상 지정될 수 있는 옵션은 다음과 같습니다.
아래 설명에 나와 있습니다.

옵션이 아닌 인수는 함께 링크될 오브젝트 파일 또는 아카이브입니다. 그들
개체 파일이
인수는 옵션과 해당 인수 사이에 둘 수 없습니다.

일반적으로 링커는 적어도 하나의 개체 파일과 함께 호출되지만 다른 개체 파일을 지정할 수 있습니다.
다음을 사용하는 바이너리 입력 파일 형식 -l, -R, 스크립트 명령 언어. 만약에 아니
입력 파일이 전혀 지정되지 않은 경우 링커는 출력을 생성하지 않으며
메시지 아니 입력 파일.

링커가 개체 파일의 형식을 인식할 수 없는 경우
링커 스크립트. 이 방법으로 지정된 스크립트는 다음에 사용되는 기본 링커 스크립트를 보강합니다.
링크(기본 링커 스크립트 또는 -T). 이
이 기능을 사용하면 링커가 개체 또는
아카이브하지만 실제로는 일부 기호 값을 정의하거나 "INPUT" 또는 "GROUP"을 사용하여
다른 개체를 로드합니다. 이런 식으로 스크립트를 지정하면 단순히 메인 링커를 보강할 뿐입니다.
스크립트, 기본 스크립트 뒤에 추가 명령이 배치됩니다. 사용 -T 교체 옵션
기본 링커 스크립트를 완전히 사용하지만 "INSERT" 명령의 효과에 유의하십시오.

이름이 단일 문자인 옵션의 경우 옵션 인수는 다음 중 하나를 따라야 합니다.
공백이 없는 옵션 문자 또는 별도의 인수로 제공
그것들을 필요로 하는 옵션을 즉시 따르십시오.

이름이 여러 글자인 옵션의 경우 하나 또는 두 개의 대시가 앞에 올 수 있습니다.
옵션 이름; 예를 들어, -추적 기호--추적 기호 동등합니다. 참고 --- 거기
이 규칙의 한 가지 예외입니다. 소문자 'o'로 시작하는 여러 문자 옵션
두 개의 대시만 앞에 올 수 있습니다. 와 혼동을 줄이기 위함입니다. -o 옵션. 그래서
예를 들면 -마법 출력 파일 이름을 다음으로 설정합니다. 마법 이므로 --오매직 NMAGIC 설정
출력에 플래그를 지정합니다.

여러 문자 옵션에 대한 인수는 옵션 이름과
등호, 또는 다음 옵션 바로 뒤에 별도의 인수로 주어집니다.
그것들이 필요합니다. 예를 들어, --추적 기호 --trace-symbol=foo 동등합니다.
여러 문자 옵션 이름의 고유한 약어가 허용됩니다.

참고 ---링커가 컴파일러 드라이버를 통해 간접적으로 호출되는 경우(예: GCC) 그 때
모든 링커 명령줄 옵션에는 접두사를 붙여야 합니다. -NS, (또는 적절한
특정 컴파일러 드라이버의 경우) 다음과 같습니다.

gcc -Wl,--start-group 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, 이 옵션은 Intel 960 제품군에만 유용합니다.
아키텍처. 그 안에 ld 구성, 건축물 인수 식별
960 제품군의 특정 아키텍처는 일부 보호 기능을 활성화하고
아카이브 라이브러리 검색 경로.

향후 릴리스 ld 다른 아키텍처에 대해 유사한 기능을 지원할 수 있음
가족들.

-b 입력 형식
--형식=입력 형식
ld 여러 종류의 개체 파일을 지원하도록 구성할 수 있습니다. 만약 당신의 ld is
이 방법으로 구성하면 다음을 사용할 수 있습니다. -b 입력에 대한 이진 형식을 지정하는 옵션
명령줄에서 이 옵션 뒤에 오는 개체 파일. 경우에도 ld 구성
대체 객체 형식을 지원하기 위해 일반적으로 다음과 같이 지정할 필요가 없습니다. ld
각 형식에서 가장 일반적인 형식을 기본 입력 형식으로 예상하도록 구성해야 합니다.
기계. 입력 형식 지원하는 특정 형식의 이름인 텍스트 문자열입니다.
BFD 라이브러리. (다음을 사용하여 사용 가능한 바이너리 형식을 나열할 수 있습니다. 객체 덤프 -i.)

비정상적인 바이너리로 파일을 링크하는 경우 이 옵션을 사용할 수 있습니다.
체재. 당신은 또한 사용할 수 있습니다 -b 형식을 명시적으로 전환하려면(객체 파일을 연결할 때
다양한 형식) 포함하여 -b 입력 형식 각 개체 파일 그룹 앞에
특정 형식으로.

기본 형식은 환경 변수 "GNUTARGET"에서 가져옵니다.

"TARGET" 명령을 사용하여 스크립트에서 입력 형식을 정의할 수도 있습니다.

-c MRI 명령 파일
--mri 스크립트=MRI 명령 파일
MRI로 생성된 링커와의 호환성을 위해, ld 에 작성된 스크립트 파일을 허용합니다.
MRI 호환 스크립트 파일에 설명된 제한된 대체 명령 언어
GNU ld 문서의 섹션. 옵션이 있는 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).

--exclude-libs lib,lib, ...
기호가 자동으로 생성되지 않아야 하는 아카이브 라이브러리 목록을 지정합니다.
수출. 라이브러리 이름은 쉼표 또는 콜론으로 구분할 수 있습니다. 지정
"--exclude-libs ALL"은 자동 내보내기에서 모든 아카이브 라이브러리의 기호를 제외합니다.
이 옵션은 링커의 i386 PE 대상 포트 및 ELF에만 사용할 수 있습니다.
대상 포트. i386 PE의 경우 .def 파일에 명시적으로 나열된 기호는 여전히
이 옵션에 관계없이 내보냅니다. ELF 대상 포트의 경우 이 영향을 받는 기호
옵션은 숨김으로 처리됩니다.

--exclude-modules-for-implib 모듈,모듈, ...
기호가 없어야 하는 개체 파일 또는 아카이브 구성원의 목록을 지정합니다.
자동으로 내보내지지만 가져오기 라이브러리에 도매로 복사해야 합니다.
링크 중에 생성됩니다. 모듈 이름은 쉼표 또는
콜론을 사용하고 다음에서 사용하는 파일 이름과 정확히 일치해야 합니다. ld 파일을 열려면 아카이브용
구성원, 이것은 단순히 구성원 이름이지만 개체 파일의 경우 나열된 이름은
링커의 입력 파일을 지정하는 데 사용되는 모든 경로를 정확하게 포함하고 일치시킵니다.
명령줄. 이 옵션은 i386 PE 대상 포트에만 사용할 수 있습니다.
링커. .def 파일에 명시적으로 나열된 기호는
이 옵션.

-E
--내보내기-동적
--no-export-dynamic
동적으로 링크된 실행 파일을 생성할 때, -E 옵션 또는
--내보내기-동적 옵션은 링커가 모든 기호를 동적 기호에 추가하도록 합니다.
테이블. 동적 기호 테이블은 동적에서 볼 수 있는 기호 집합입니다.
런타임에 개체.

이 옵션 중 하나를 사용하지 않거나 --no-export-dynamic ~에 대한 옵션
기본 동작 복원), 동적 기호 테이블에는 일반적으로 다음 항목만 포함됩니다.
링크에 언급된 일부 동적 개체에서 참조하는 기호입니다.

"dlopen"을 사용하여 기호를 다시 참조해야 하는 동적 개체를 로드하는 경우
다른 동적 개체가 아닌 프로그램에서 정의한 경우
프로그램 자체를 연결할 때 이 옵션을 사용해야 합니다.

동적 목록을 사용하여 추가해야 하는 기호를 제어할 수도 있습니다.
출력 형식이 지원하는 경우 동적 기호 테이블입니다. 에 대한 설명을 참조하십시오.
--동적 목록.

이 옵션은 ELF 대상 포트에만 해당됩니다. PE 목표는 유사한 지원
DLL 또는 EXE에서 모든 기호를 내보내는 기능; 의 설명을 참조하십시오
--export-all-symbols 아래.

-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, --체재, --oformat 옵션,
링커 스크립트의 "TARGET" 명령 및 "GNUTARGET" 환경 변수. GNU
링커는 무시합니다 -F ELF 공유 객체를 생성하지 않을 때 옵션.

-피니=name
ELF 실행 파일 또는 공유 개체를 생성할 때 실행 파일 또는
DT_FINI를 함수의 주소로 설정하여 공유 객체를 언로드합니다. 에 의해
기본적으로 링커는 호출할 함수로 "_fini"를 사용합니다.

-g 무시됨. 다른 도구와의 호환성을 위해 제공됩니다.

-G 가치
--gpsize=가치
GP 레지스터를 사용하여 최적화할 객체의 최대 크기를 다음으로 설정합니다. 크기. 이
대용량 파일을 지원하는 MIPS ELF와 같은 개체 파일 형식에만 의미가 있습니다.
다른 섹션으로 작은 개체. 다른 목적 파일에서는 무시됩니다.
형식.

-h name
-이름=name
ELF 공유 객체를 생성할 때 내부 DT_SONAME 필드를 지정된
이름. 실행 파일이 DT_SONAME 필드가 있는 공유 객체와 링크되면,
그런 다음 실행 파일이 실행될 때 동적 링커는 공유 로드를 시도합니다.
주어진 파일 이름을 사용하는 대신 DT_SONAME 필드에 의해 지정된 개체
링커.

-i 증분 링크 수행(옵션과 동일 -r).

-초기화=name
ELF 실행 파일 또는 공유 개체를 생성할 때 실행 파일 또는
공유 객체는 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 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)

만나다 링커 스크립트의 표현식에 대한 자세한 내용은

-n
--nmagic
섹션의 페이지 정렬을 끄고 공유 라이브러리에 대한 링크를 비활성화하십시오. 만약에
출력 형식은 Unix 스타일의 매직 넘버를 지원하며 출력을 "NMAGIC"으로 표시합니다.

-N
--오매직
텍스트 및 데이터 섹션을 읽고 쓸 수 있도록 설정합니다. 또한 페이지 정렬을 하지 마십시오.
데이터 세그먼트를 제거하고 공유 라이브러리에 대한 링크를 비활성화합니다. 출력 형식인 경우
Unix 스타일의 매직 넘버를 지원하고 출력을 "OMAGIC"으로 표시합니다. 참고: 비록
쓰기 가능한 텍스트 섹션은 PE-COFF 대상에 대해 허용되지만
Microsoft에서 게시한 형식 사양.

--no-omagic
이 옵션은 대부분의 효과를 무효화합니다. -N 옵션. 텍스트 섹션을 다음으로 설정합니다.
읽기 전용이고 데이터 세그먼트가 페이지 정렬되도록 강제합니다. 참고 - 이 옵션은
공유 라이브러리에 대한 링크를 활성화하지 마십시오. 사용하다 -비다이나믹 이합니다.

-o 출력
--출력=출력
용도 출력 에서 만든 프로그램의 이름으로 ld; 이 옵션이 없으면
지정된, 이름 아웃 기본적으로 사용됩니다. 스크립트 명령 "OUTPUT"도 가능합니다.
출력 파일 이름을 지정합니다.

-O 수평
If 수평 XNUMX보다 큰 숫자 값입니다. ld 출력을 최적화합니다. 이건 아마도
훨씬 더 오래 걸리므로 아마도 최종
바이너리. 현재 이 옵션은 ELF 공유 라이브러리 생성에만 영향을 미칩니다. 미래
링커 릴리스에서는 이 옵션을 더 많이 사용할 수 있습니다. 또한 현재는 없다.
이 옵션의 XNUMX이 아닌 다른 값에 대한 링커 동작의 차이.
다시 말하지만 이는 향후 릴리스에서 변경될 수 있습니다.

--푸시 상태
또한 --푸시 상태 제어하는 플래그의 현재 상태를 보존할 수 있습니다.
하나의 해당 파일로 모두 복원할 수 있도록 입력 파일 처리
--팝 상태 옵션을 선택합니다.

적용되는 옵션은 다음과 같습니다. -비다이나믹, -비정적, -NS, -디, -call_shared,
-비공유, -공전, -N, -n, --전체 아카이브, --전체 아카이브 없음, -r, -우르,
--copy-dt-needed-entries, --no-copy-dt-needed-entries, --필요에 따라, --필요에 따라 없음,
-a.

이 옵션의 한 대상은 다음 사양입니다. 패키지 구성. 와 함께 사용할 때
--libs 옵션 가능한 모든 라이브러리가 나열되고 다음과 연결될 수 있습니다.
항상. 다음과 같이 반환하는 것이 좋습니다.

-Wl,--push-state,--필요에 따라 -libone -libtwo -Wl,--pop-state

--push-state의 효과를 취소하고 플래그를 제어하는 ​​이전 값을 복원합니다.
입력 파일 처리.

-q
--emit-relocs
완전히 연결된 실행 파일에 재배치 섹션과 콘텐츠를 남겨둡니다. 게시물 링크
분석 및 최적화 도구는 올바른 작업을 수행하기 위해 이 정보가 필요할 수 있습니다.
실행 파일 수정. 그 결과 더 큰 실행 파일이 생성됩니다.

이 옵션은 현재 ELF 플랫폼에서만 지원됩니다.

--힘-동적
출력 파일에 동적 섹션이 있어야 합니다. 이 옵션은 VxWorks에만 해당됩니다.
목표.

-r
-- 재배치 가능
재배치 가능한 출력 생성 ---즉, 차례로 다음 역할을 할 수 있는 출력 파일을 생성합니다.
에 입력 ld. 이것은 흔히 일부의 연결. 부작용으로 환경에서
표준 Unix 매직 넘버를 지원하는 이 옵션은 출력 파일의
"OMAGIC"에 매직 넘버. 이 옵션을 지정하지 않으면 절대 파일은
생산. C++ 프로그램을 연결할 때 이 옵션은 의지 지원 에 대한 참조 해결
생성자; 그렇게하려면 사용 -우르.

입력 파일이 출력 파일과 동일한 형식이 아닌 경우 부분 링크
해당 입력 파일에 재배치가 포함되지 않은 경우에만 지원됩니다. 다른
출력 형식에는 추가 제한이 있을 수 있습니다. 예를 들어 일부 "a.out" 기반 형식
다른 형식의 입력 파일과의 부분 링크를 전혀 지원하지 않습니다.

이 옵션은 다음과 동일한 작업을 수행합니다. -i.

-R 파일 이름
--그냥 기호=파일 이름
다음에서 기호 이름과 주소 읽기 파일 이름, 그러나 위치를 바꾸거나 포함하지 마십시오.
출력에 있습니다. 이렇게 하면 출력 파일이 절대값을 상징적으로 참조할 수 있습니다.
다른 프로그램에 정의된 메모리 위치 이 옵션을 다음보다 더 많이 사용할 수 있습니다.
일단.

다른 ELF 링커와의 호환성을 위해 -R 옵션 뒤에 디렉토리가 옵니다
파일 이름이 아닌 이름으로 처리됩니다. -rpath 옵션을 선택합니다.

-s
-모든 스트립
출력 파일에서 모든 기호 정보를 생략합니다.

-S
--strip-debug
출력 파일에서 디버거 기호 정보를 생략합니다(모든 기호는 아님).

-t
--추적하다
입력 파일의 이름을 다음과 같이 인쇄하십시오. ld 처리합니다.

-T 스크립트 파일
--스크립트=스크립트 파일
용도 스크립트 파일 링커 스크립트로. 이 스크립트는 다음을 대체합니다. ld의 기본 링커 스크립트
(추가하는 대신), 그래서 명령 파일 에 필요한 모든 것을 지정해야 합니다.
출력 파일을 설명합니다. 만약에 스크립트 파일 현재 디렉토리에 존재하지 않습니다.
"ld"는 이전에 지정된 디렉토리에서 찾습니다. -L 옵션. 다수의
-T 옵션이 누적됩니다.

-dT 스크립트 파일
--기본 스크립트=스크립트 파일
용도 스크립트 파일 기본 링커 스크립트로.

이 옵션은 다음과 유사합니다. --스크립트 스크립트 처리가
나머지 명령줄이 처리될 때까지 지연됩니다. 이것은 허용
뒤에 배치된 옵션 --기본 스크립트 영향을 미치는 명령줄의 옵션
링커 명령줄에서 중요할 수 있는 링커 스크립트의 동작
사용자가 직접 제어할 수 없습니다. (예: 명령줄이
다음과 같은 다른 도구로 구성 GCC).

-u 상징
--정의되지 않음=상징
상징 정의되지 않은 기호로 출력 파일에 입력됩니다. 이렇게 하면,
예를 들어, 표준 라이브러리에서 추가 모듈의 링크를 트리거합니다. -u
정의되지 않은 추가 기호를 입력하기 위해 다른 옵션 인수로 반복됩니다. 이것
옵션은 "EXTERN" 링커 스크립트 명령과 동일합니다.

이 옵션을 사용하여 추가 모듈을 링크로 강제로 끌어오는 경우,
기호가 정의되지 않은 상태로 유지되는 것이 오류인 경우 옵션
--필수 정의 대신 사용해야합니다.

--require 정의=상징
을 요구한다 상징 출력 파일에 정의되어 있습니다. 이 옵션은 옵션과 동일합니다.
--찾으시는 주소가 없습니다 경우를 제외하고 상징 출력 파일에 정의되지 않은 경우 링커
오류가 발생하고 종료됩니다. 링커 스크립트에서 동일한 효과를 얻을 수 있습니다.
"EXTERN", "ASSERT" 및 "DEFINED"를 함께 사용합니다. 이 옵션은 여러 번 사용할 수 있습니다.
추가 기호가 필요한 시간.

-우르 C++ 프로그램 이외의 모든 경우 이 옵션은 다음과 같습니다. -r: 생성한다
재배치 가능한 출력 --- 즉, 차례로 입력으로 사용될 수 있는 출력 파일 ld. 언제
C++ 프로그램 연결, -우르 하지 생성자에 대한 참조를 확인하는 것과는 달리 -r. 그렇습니다
사용하지 않는다 -우르 자신과 연결된 파일에 -우르; 한 번
생성자 테이블이 빌드되었으므로 추가할 수 없습니다. 사용하다 -우르 마지막으로만
부분 링크 및 -r 다른 사람들을 위해.

--고아 처리=모드
고아 섹션이 처리되는 방식을 제어합니다. 고아 섹션은 구체적이지 않은 섹션입니다.
링커 스크립트에 언급되어 있습니다.

모드 다음 값 중 하나를 가질 수 있습니다.

"장소"
고아 섹션은 전략에 따라 적절한 출력 섹션에 배치됩니다.
에 설명 고아 섹션. 옵션 --고유 한 또한 섹션이 어떻게 구성되는지에 영향을 미칩니다.
배치.

"버리다"
모든 고아 섹션은 삭제됩니다. /버리다/ 안내

"경고하다"
링커는 "place"에 대해 고아 섹션을 배치하고 경고도 발행합니다.

"오류"
링커는 고아 섹션이 발견되면 오류와 함께 종료됩니다.

기본값인 경우 --고아 처리 "장소"가 주어지지 않습니다.

--고유[=]
일치하는 모든 입력 섹션에 대해 별도의 출력 섹션을 만듭니다. , 또는
선택적 와일드 카드 모든 고아 입력 섹션에 대해 인수가 누락되었습니다. NS
고아 섹션은 링커 스크립트에서 구체적으로 언급되지 않은 섹션입니다. 당신은 이것을 사용할 수 있습니다
명령줄에서 옵션을 여러 번 사용합니다. 입력의 정상적인 병합을 방지합니다.
링커 스크립트에서 출력 섹션 할당을 재정의하는 동일한 이름의 섹션.

-v
--번역
-V 에 대한 버전 번호 표시 ld. 그만큼 -V 옵션은 지원되는 에뮬레이션도 나열합니다.

-x
--모두 삭제
모든 로컬 기호를 삭제합니다.

-X
--discard-locals
모든 임시 로컬 기호를 삭제합니다. (이러한 기호는 시스템별 로컬로 시작합니다.
레이블 접두사, 일반적으로 .L ELF 시스템 또는 L 전통적인.out 시스템의 경우.)

-y 상징
--추적 기호=상징
연결된 각 파일의 이름을 인쇄하십시오. 상징 나타납니다. 이 옵션이 주어질 수 있습니다
몇 번이든. 많은 시스템에서 밑줄을 앞에 추가해야 합니다.

이 옵션은 링크에 정의되지 않은 기호가 있지만 알 수 없는 경우에 유용합니다.
참조의 출처.

-Y 통로
추가 통로 기본 라이브러리 검색 경로로 이동합니다. 이 옵션은 Solaris용으로 존재합니다.
호환성.

-z 키워드는
인식된 키워드는 다음과 같습니다.

콤브록
여러 reloc 섹션을 결합하고 정렬하여 동적 기호 조회를 만듭니다.
캐싱 가능.

데프
개체 파일에서 정의되지 않은 기호를 허용하지 않습니다. 공유의 정의되지 않은 기호
라이브러리는 여전히 허용됩니다.

실행 스택
개체를 실행 가능한 스택이 필요한 것으로 표시합니다.

글로벌
이 옵션은 공유 객체를 구축할 때만 의미가 있습니다. 그것은 만든다
심볼 해석에 사용할 수 있는 이 공유 객체에 의해 정의된 심볼
이후에 로드된 라이브러리.

초기화
이 옵션은 공유 객체를 구축할 때만 의미가 있습니다. 그것은 대상을 표시합니다
런타임 초기화가 의 런타임 초기화 전에 발생하도록
동시에 프로세스에 가져온 다른 모든 개체. 마찬가지로
개체의 런타임 종료는 의 런타임 종료 후에 발생합니다.
다른 모든 개체.

끼어들다
심볼 테이블이 모든 심볼 앞에 삽입되는 객체를 표시하지만
기본 실행 파일.

게으른
실행 파일 또는 공유 라이브러리를 생성할 때 표시하여 동적
함수 호출 확인을 함수가 호출될 때까지 지연시키는 링커
(지연 바인딩), 로드 시간이 아닙니다. 지연 바인딩이 기본값입니다.

loadfltr
해당 필터가 런타임에 즉시 처리되는 개체를 표시합니다.

물 데프
다중 정의를 허용합니다.

노콤브록
여러 reloc 섹션 결합을 비활성화합니다.

nocopyreloc
에 정의된 변수 대신 사용되는 링커 생성 .dynbss 변수 비활성화
공유 라이브러리. 동적 텍스트 재배치가 발생할 수 있습니다.

nodefaultlib
이 개체의 종속성을 검색할 때 무시할 개체를 표시합니다.
기본 라이브러리 검색 경로.

노드 삭제
런타임에 개체를 언로드해서는 안 된다고 표시합니다.

노드로펜
"dlopen"에 사용할 수 없는 개체를 표시합니다.

결절
"dldump"로 개체를 덤프할 수 없음을 표시합니다.

noexecstack
개체를 실행 가능한 스택이 필요하지 않은 것으로 표시합니다.

본문
공유 개체의 DT_TEXTREL을 오류로 처리합니다.

노텍스트
공유 객체의 DT_TEXTREL을 오류로 취급하지 마십시오.

텍스트 오프
공유 객체의 DT_TEXTREL을 오류로 취급하지 마십시오.

노렐로
개체에 ELF "PT_GNU_RELRO" 세그먼트 헤더를 생성하지 마십시오.

지금 실행 파일 또는 공유 라이브러리를 생성할 때 표시하여 동적
프로그램이 시작되거나 공유될 때 모든 기호를 해결하는 링커
라이브러리는 함수 호출 확인을 연기하는 대신 dlopen을 사용하여 연결됩니다.
함수가 처음 호출되는 시점까지.

출발지
개체에 $ORIGIN이 포함될 수 있음을 표시합니다.

렐로
개체에 ELF "PT_GNU_RELRO" 세그먼트 헤더를 만듭니다.

최대 페이지 크기=가치
에뮬레이션 최대 페이지 크기를 다음으로 설정합니다. 가치.

공통 페이지 크기=가치
에뮬레이션 공통 페이지 크기를 다음으로 설정합니다. 가치.

스택 크기 =가치
ELF "PT_GNU_STACK" 세그먼트에 대한 스택 크기를 지정합니다. XNUMX을 지정하면
XNUMX이 아닌 크기의 기본 "PT_GNU_STACK" 세그먼트 생성을 재정의합니다.

bndplt
항상 PLT 항목에 BND 접두사를 생성하십시오. Linux/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" 생성
푸"라고 불러. call-nop=접두사-nop "0x90 호출 foo"를 생성합니다. call-nop=접미사-nop
"call foo 0x90"을 생성합니다. call-nop=접두사-바이트 "를 생성한다바이트 전화 푸".
call-nop=접미사-바이트 "call foo" 생성 바이트". i386 및 x86_64에서 지원됩니다.

다른 키워드는 Solaris 호환성을 위해 무시됩니다.

-( 기록 보관소 -)
--시작 그룹 기록 보관소 --end-그룹
또한 기록 보관소 아카이브 파일 목록이어야 합니다. 명시적 파일일 수 있습니다.
이름, 또는 -l 옵션을 제공합니다.

정의되지 않은 새 참조가 없을 때까지 지정된 아카이브를 반복적으로 검색합니다.
만들어진. 일반적으로 아카이브는 지정된 순서대로 한 번만 검색됩니다.
명령줄에서. 정의되지 않은 문제를 해결하기 위해 해당 아카이브의 기호가 필요한 경우
나중에 명령줄에 나타나는 아카이브의 개체가 참조하는 기호,
링커는 해당 참조를 확인할 수 없습니다. 아카이브를 그룹화하여,
가능한 모든 참조가 해결될 때까지 모두 반복적으로 검색됩니다.

이 옵션을 사용하면 상당한 성능 비용이 발생합니다. 때만 사용하는 것이 좋다.
둘 이상의 아카이브 간에 불가피한 순환 참조가 있습니다.

--accept-unknown-input-arch
--no-accept-unknown-input-arch
아키텍처를 인식할 수 없는 입력 파일을 허용하도록 링커에 지시합니다. NS
사용자가 자신이 하는 일을 알고 의도적으로 연결하려는 것으로 가정합니다.
이러한 알 수 없는 입력 파일에서. 이것은 링커의 기본 동작이었습니다.
릴리스 2.14. 릴리스 2.14 이후의 기본 동작은 이러한 입력을 거부하는 것입니다.
파일 등 --accept-unknown-input-arch 옵션이 이전 버전을 복원하는 데 추가되었습니다.
행동.

--필요에 따라
--필요에 따라 없음
이 옵션은 명령에 언급된 동적 라이브러리의 ELF DT_NEEDED 태그에 영향을 줍니다.
다음 줄 --필요에 따라 옵션. 일반적으로 링커는 DT_NEEDED 태그를 추가합니다.
라이브러리 여부에 관계없이 명령줄에 언급된 각 동적 라이브러리
실제로 필요하거나 필요하지 않습니다. --필요에 따라 DT_NEEDED 태그가 다음에 대해서만 내보내지도록 합니다.
도서관 at 포인트 in 전에, 링크 약하지 않은 정의되지 않은 기호를 충족합니다.
일반 개체 파일에서 참조하거나 DT_NEEDED에서 라이브러리를 찾을 수 없는 경우
다른 필요한 라이브러리 목록, 다른 라이브러리의 약한 정의되지 않은 기호 참조
동적 라이브러리가 필요합니다. 명령줄에 나타나는 개체 파일 또는 라이브러리 시간 내에
문제의 라이브러리는 라이브러리가 필요에 따라 표시되는지 여부에 영향을 주지 않습니다. 이것은
아카이브에서 개체 파일을 추출하는 규칙과 유사합니다. --필요에 따라 없음
기본 동작을 복원합니다.

--추가 필요
--추가 필요 없음
이 두 옵션은 이름의 유사성 때문에 더 이상 사용되지 않습니다.
--필요에 따라--필요에 따라 없음 옵션. 그들은 다음으로 대체되었습니다
--copy-dt-needed-entries--no-copy-dt-needed-entries.

-주장하다 키워드는
이 옵션은 SunOS 호환성을 위해 무시됩니다.

-비다이나믹
-디
-call_shared
동적 라이브러리에 대한 링크. 이것은 공유된 플랫폼에서만 의미가 있습니다.
라이브러리가 지원됩니다. 이 옵션은 일반적으로 이러한 플랫폼에서 기본값입니다. NS
이 옵션의 다른 변형은 다양한 시스템과의 호환성을 위한 것입니다. 당신은 할 수있다
명령줄에서 이 옵션을 여러 번 사용합니다. 라이브러리 검색에 영향을 줍니다.
-l 그 뒤를 잇는 옵션.

-B그룹
동적 섹션의 "DT_FLAGS_1" 항목에서 "DF_1_GROUP" 플래그를 설정합니다. 이것
런타임 링커가 이 개체 및 해당 종속성의 조회를 처리하도록 합니다.
그룹 내에서만 수행됩니다. --unresolved-symbols=전체 보고 암시되어 있습니다. 이것
옵션은 공유 라이브러리를 지원하는 ELF 플랫폼에서만 의미가 있습니다.

-비정적
-NS
-비공유
-공전
공유 라이브러리에 대해 링크하지 마십시오. 이는 다음과 같은 플랫폼에서만 의미가 있습니다.
공유 라이브러리가 지원됩니다. 이 옵션의 다른 변형은 다음과 같습니다.
다양한 시스템과의 호환성. 에서 이 옵션을 여러 번 사용할 수 있습니다.
명령줄: 라이브러리 검색에 영향을 줍니다. -l 그 뒤를 잇는 옵션. 이것
옵션도 의미합니다 --unresolved-symbols=전체 보고. 이 옵션은 다음과 함께 사용할 수 있습니다.
-공유. 그렇게 하면 공유 라이브러리가 생성되지만 모든
라이브러리의 외부 참조는 정적에서 항목을 가져와 해결해야 합니다.
라이브러리.

-비심볼릭
공유 라이브러리를 생성할 때 전역 기호에 대한 참조를 정의에 바인딩합니다.
공유 라이브러리 내에서(있는 경우). 일반적으로 연결된 프로그램에 대해 가능합니다.
공유 라이브러리에 대해 공유 라이브러리 내의 정의를 재정의합니다. 이것
옵션은 공유 라이브러리를 지원하는 ELF 플랫폼에서만 의미가 있습니다.

-Bsymbolic-함수
공유 라이브러리를 생성할 때 전역 함수 기호에 대한 참조를
공유 라이브러리 내의 정의(있는 경우). 이 옵션은 ELF에서만 의미가 있습니다.
공유 라이브러리를 지원하는 플랫폼.

--동적 목록=동적 목록 파일
링커에 동적 목록 파일의 이름을 지정합니다. 이것은 일반적으로 다음과 같은 경우에 사용됩니다.
참조가 있는 전역 기호 목록을 지정하는 공유 라이브러리 생성
공유 라이브러리 내의 정의에 바인딩되어서는 안 됩니다.
추가해야 하는 기호 목록을 지정하기 위해 동적으로 링크된 실행 파일
실행 파일의 기호 테이블 이 옵션은 ELF 플랫폼에서만 의미가 있습니다.
공유 라이브러리를 지원합니다.

동적 목록의 형식은 범위 및 노드가 없는 버전 노드와 동일합니다.
이름. 보다 버전 문의주시기 바랍니다.

--동적 목록 데이터
동적 목록에 모든 전역 데이터 기호를 포함합니다.

--dynamic-list-cpp-new
C++ 연산자 new 및 delete에 대한 기본 제공 동적 목록을 제공합니다. 주로 유용하다
공유 libstdc++ 빌드용.

--동적 목록-cpp-유형 정보
C++ 런타임 유형 식별을 위한 기본 제공 동적 목록을 제공합니다.

--체크 섹션
--체크 섹션 없음
링커에게 묻습니다. 지원 섹션 주소가 할당된 후 확인하기 위해
겹치는 부분이 있습니다. 일반적으로 링커는 이 검사를 수행하고 발견하면
겹치면 적절한 오류 메시지가 생성됩니다. 링커는 에 대해 알고 있으며
오버레이의 섹션을 허용합니다. 기본 동작을 복원할 수 있습니다.
명령줄 스위치를 사용하여 --체크 섹션. 섹션 겹침은 일반적으로
재배치 가능한 링크를 확인했습니다. 이 경우 다음을 사용하여 강제로 확인할 수 있습니다.
--체크 섹션 옵션을 선택합니다.

--copy-dt-needed-entries
--no-copy-dt-needed-entries
이 옵션은 DT_NEEDED 태그가 참조하는 동적 라이브러리 처리에 영향을 줍니다.
내부 명령줄에 언급된 ELF 동적 라이브러리. 일반적으로 링커는
DT_NEEDED 태그에 언급된 각 라이브러리의 출력 바이너리에 DT_NEEDED 태그 추가
입력 동적 라이브러리에서. 와 함께 --copy-dt-needed-entries 명령에 지정된
그러나 그 뒤에 오는 모든 동적 라이브러리에는 DT_NEEDED 항목이 있습니다.
추가했습니다. 기본 동작은 다음을 사용하여 복원할 수 있습니다. --no-copy-dt-needed-entries.

이 옵션은 동적 라이브러리의 기호 해상도에도 영향을 줍니다.
--copy-dt-needed-entries 명령줄에 언급된 동적 라이브러리는
DT_NEEDED 태그를 따라 다른 라이브러리로 재귀적으로 검색됩니다.
출력 바이너리에 필요한 기호를 확인합니다. 그러나 기본 설정을 사용하면
뒤에 오는 동적 라이브러리 검색은 동적 라이브러리로 중지됩니다.
그 자체. 기호를 확인하기 위해 DT_NEEDED 링크를 통과하지 않습니다.

--cref
상호 참조 테이블을 출력합니다. 링커 맵 파일이 생성되는 경우 크로스
참조 테이블이 맵 파일에 인쇄됩니다. 그렇지 않으면 표준에 인쇄됩니다.
출력.

테이블의 형식은 의도적으로 단순하여 다음에서 쉽게 처리할 수 있습니다.
필요한 경우 스크립트. 기호는 이름별로 정렬되어 인쇄됩니다. 각 기호에 대해,
파일 이름 목록이 제공됩니다. 기호가 정의된 경우 나열된 첫 번째 파일은
정의의 위치. 기호가 공통 값으로 정의되면 모든 파일
이것이 일어나는 곳은 다음에 나타납니다. 마지막으로 기호를 참조하는 모든 파일은
나열되어 있습니다.

--no-define-common
이 옵션은 공통 기호에 대한 주소 할당을 금지합니다. 스크립트
"INHIBIT_COMMON_ALLOCATION" 명령은 동일한 효과를 가집니다.

또한 --no-define-common 이 옵션을 사용하면 주소를 할당하는 결정을 분리할 수 있습니다.
출력 파일 유형 선택의 공통 기호. 그렇지 않으면 재배치 불가능
출력 유형은 공통 기호에 주소를 강제로 할당합니다. 사용 --no-define-common
공유 라이브러리에서 참조되는 공통 기호를 할당할 수 있습니다.
주 프로그램에서만 주소. 이것은 사용하지 않는 중복 공간을 제거합니다.
공유 라이브러리를 제공하고 잘못된 문제 해결에 대한 혼란을 방지합니다.
에 대한 특수 검색 경로가 있는 동적 모듈이 많은 경우 복제
런타임 기호 해결.

--defsym=상징=표현
다음으로 주어진 절대 주소를 포함하는 출력 파일에 전역 기호를 만듭니다.
표현. 여러 번 정의하는 데 필요한 만큼 이 옵션을 사용할 수 있습니다.
명령줄의 기호. 제한된 형태의 산술이 지원됩니다.
표현 이 문맥에서: XNUMX진수 상수나 이름을 지정할 수 있습니다.
기존 기호를 사용하거나 "+" 및 "-"를 사용하여 XNUMX진수 상수를 더하거나 빼거나
기호. 더 정교한 표현이 필요하면 링커 명령을 사용하는 것을 고려하십시오.
스크립트에서 언어. 참고 : 사이에 공백이 없어야 합니다. 상징
등호("="), 그리고 표현.

--demangle[=스타일]
-- 엉킴 없음
이러한 옵션은 오류 메시지 및 기타
산출. 링커가 demangle 명령을 받으면 심볼 이름을
읽을 수 있는 방식: 개체 파일에서 사용되는 경우 선행 밑줄을 제거합니다.
형식을 지정하고 C++ 맹글링된 기호 이름을 사용자가 읽을 수 있는 이름으로 변환합니다. 다른
컴파일러에는 다른 맹글링 스타일이 있습니다. 선택적 디망글링 스타일 인수는
컴파일러에 적합한 디맹글링 스타일을 선택하는 데 사용됩니다. 링커는
환경 변수가 없으면 기본적으로 demangle COLLECT_NO_DEMANGLE 설정됩니다. 이것들
옵션을 사용하여 기본값을 무시할 수 있습니다.

-I파일
--동적 링커=파일
동적 링커의 이름을 설정합니다. 생성할 때만 의미가 있습니다.
동적으로 연결된 ELF 실행 파일. 기본 동적 링커는 일반적으로 정확합니다.
당신이하고있는 일을 모르는 한 이것을 사용하지 마십시오.

--no-dynamic-linker
실행 파일을 생성할 때 사용할 동적 링커에 대한 요청을 생략합니다.
로드 시간. 이것은 동적 파일을 포함하는 ELF 실행 파일에만 의미가 있습니다.
재배치 및 일반적으로 이러한 작업을 처리할 수 있는 진입점 코드가 필요합니다.
재배치.

--치명적인 경고
--치명적인 경고 없음
모든 경고를 오류로 처리하십시오. 옵션을 사용하여 기본 동작을 복원할 수 있습니다.
--치명적인 경고 없음.

--force-exe-접미사
출력 파일에 .exe 접미사가 있는지 확인하십시오.

성공적으로 빌드된 완전히 연결된 출력 파일에 ".exe" 또는 ".dll"이 없는 경우
접미사, 이 옵션은 링커가 출력 파일을 동일한 이름 중 하나로 복사하도록 합니다.
".exe" 접미사가 있습니다. 이 옵션은 수정되지 않은 Unix 메이크파일을 사용할 때 유용합니다.
Microsoft Windows 호스트, Windows의 일부 버전은
".exe" 접미사로 끝납니다.

--gc-섹션
--no-gc-섹션
사용하지 않는 입력 섹션의 가비지 수집을 활성화합니다. 하는 대상에서는 무시됩니다.
이 옵션을 지원하지 않습니다. 기본 동작(이 가비지
컬렉션)을 지정하여 복원할 수 있습니다. --no-gc-섹션 명령 행에서.

--gc-섹션 기호를 검사하여 사용되는 입력 섹션을 결정하고
재배치. 항목 기호가 포함된 섹션과 다음을 포함하는 모든 섹션
명령줄에 정의되지 않은 기호는 다음을 포함하는 섹션과 마찬가지로 유지됩니다.
동적 객체가 참조하는 기호. 공유 라이브러리를 구축할 때,
링커는 표시되는 기호가 참조된다고 가정해야 합니다. 일단 이 초기 세트
섹션이 결정되면 링커는 모든 섹션을 사용된 것으로 재귀적으로 표시합니다.
그들의 재배치에 의해 참조됩니다. 보다 --기입--찾으시는 주소가 없습니다.

이 옵션은 부분 링크를 수행할 때 설정할 수 있습니다(옵션으로 활성화됨 -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%

--도움
표준 출력에 명령줄 옵션 요약을 인쇄하고 종료합니다.

--target-help
표준 출력 및 종료에 대한 모든 대상 특정 옵션의 요약을 인쇄합니다.

-지도=맵 파일
파일에 대한 링크 맵 인쇄 맵 파일. 에 대한 설명을 참조하십시오. -M 옵션, 위.

--no-keep-메모리
ld 일반적으로 기호 테이블을 캐싱하여 메모리 사용보다 속도를 최적화합니다.
메모리에 파일을 입력합니다. 이 옵션은 다음을 알려줍니다. ld 대신 메모리 사용을 최적화하기 위해
필요에 따라 기호 테이블을 다시 읽습니다. 다음과 같은 경우 필요할 수 있습니다. ld 부족하다
큰 실행 파일을 연결하는 동안 메모리 공간이 부족합니다.

--정의되지 않음
-z 데프
일반 개체 파일에서 확인되지 않은 기호 참조를 보고합니다. 이것은 다음과 같은 경우에도 수행됩니다.
링커가 기호가 아닌 공유 라이브러리를 만들고 있습니다. 스위치
--[no-]allow-shlib-정의되지 않음 미해결 보고를 위한 동작을 제어합니다.
링크되는 공유 라이브러리에서 찾은 참조.

--허용-다중 정의
-z 물 데프
일반적으로 기호가 여러 번 정의되면 링커는 치명적인
오류. 이러한 옵션은 여러 정의를 허용하며 첫 번째 정의가 사용됩니다.

--allow-shlib-undefined
--no-allow-shlib-undefined
공유 라이브러리에서 정의되지 않은 기호를 허용하거나 허용하지 않습니다. 이 스위치는 다음과 유사합니다.
--정의되지 않음 정의되지 않은 기호가 다음과 같은 경우 동작을 결정한다는 점을 제외하고
일반 오브젝트 파일이 아닌 공유 라이브러리에 있습니다. 방법에 영향을 미치지 않습니다.
일반 개체 파일의 정의되지 않은 기호가 처리됩니다.

기본 동작은 에서 참조하는 정의되지 않은 기호에 대한 오류를 보고하는 것입니다.
링커가 실행 파일을 만드는 데 사용되지만 허용하려면 공유 라이브러리
링커를 사용하여 공유 라이브러리를 만드는 경우.

에 지정된 공유 라이브러리에서 정의되지 않은 기호 참조를 허용하는 이유
링크 시간은 다음과 같습니다.

· 링크 시간에 지정된 공유 라이브러리는 현재 지정된 공유 라이브러리와 동일하지 않을 수 있습니다.
로드 시간에 사용할 수 있으므로 기호는 로드 시간에 실제로 해석될 수 있습니다.

· BeOS 및 HPPA와 같은 일부 운영 체제에서는 정의되지 않은 기호가
공유 라이브러리는 정상입니다.

예를 들어 BeOS 커널은 로드 시 공유 라이브러리를 패치하여 선택합니다.
현재 아키텍처에 가장 적합한 기능. 이것은
예를 들어 적절한 memset 기능을 동적으로 선택하는 데 사용됩니다.

--no-undefined-version
일반적으로 기호에 정의되지 않은 버전이 있으면 링커는 이를 무시합니다. 이것
이 옵션은 버전이 정의되지 않은 기호를 허용하지 않으며 치명적인 오류가 발생합니다.
대신.

--default-symver
버전이 지정되지 않은 내보낸 기호에 대한 기본 기호 버전(soname)을 만들고 사용합니다.

--default-imported-symver
버전이 지정되지 않은 가져온 기호에 대한 기본 기호 버전(soname)을 만들고 사용합니다.

--경고 불일치
일반적으로 ld 다음과 같은 입력 파일을 함께 연결하려고 하면 오류가 발생합니다.
어떤 이유로 일치하지 않습니다. 아마도 다른 용도로 컴파일되었기 때문일 수 있습니다.
프로세서 또는 다른 엔디안용. 이 옵션은 다음을 알려줍니다. ld 그래야 한다
그러한 가능한 오류를 조용히 허용하십시오. 이 옵션은 주의해서 사용해야 합니다.
링커 오류를 확인하는 몇 가지 특별한 조치를 취한 경우
부적절한.

--no-warn-search-mismatch
일반적으로 ld 라이브러리 중에 호환되지 않는 라이브러리를 찾으면 경고를 표시합니다.
검색. 이 옵션은 경고를 무음으로 설정합니다.

--전체 아카이브 없음
의 효과를 끕니다. --전체 아카이브 후속 아카이브 파일에 대한 옵션입니다.

--noinhibit-exec
여전히 사용할 수 있을 때마다 실행 가능한 출력 파일을 유지합니다. 일반적으로 링커는
링크 프로세스 중에 오류가 발생하면 출력 파일을 생성하지 않습니다. 그것
오류가 발생하면 출력 파일을 쓰지 않고 종료됩니다.

-nostdlib
명령줄에 명시적으로 지정된 라이브러리 디렉터리만 검색합니다. 도서관
링커 스크립트에 지정된 디렉토리(에 지정된 링커 스크립트 포함
명령줄)은 무시됩니다.

--o형식=출력 형식
ld 여러 종류의 개체 파일을 지원하도록 구성할 수 있습니다. 만약 당신의 ld is
이 방법으로 구성하면 다음을 사용할 수 있습니다. --oformat 바이너리 형식을 지정하는 옵션
출력 목적 파일. 경우에도 ld 대체 개체를 지원하도록 구성됨
형식, 일반적으로 다음과 같이 지정할 필요가 없습니다. ld 생성하도록 구성해야 합니다.
기본 출력 형식으로 각 시스템에서 가장 일반적인 형식입니다. 출력 형식 하는
텍스트 문자열, BFD 라이브러리에서 지원하는 특정 형식의 이름. (당신은 할 수 있습니다
사용 가능한 바이너리 형식 나열 객체 덤프 -i.) 스크립트 명령
"OUTPUT_FORMAT"도 출력 형식을 지정할 수 있지만 이 옵션이 이를 재정의합니다.

-파이
--pic-실행 가능
위치 독립 실행 파일을 만듭니다. 이것은 현재 ELF에서만 지원됩니다.
플랫폼. 위치 독립 실행 파일은 다음과 같은 점에서 공유 라이브러리와 유사합니다.
동적 링커에 의해 OS가 선택한 가상 주소로 재배치됩니다.
(호출마다 다를 수 있음). 일반 동적으로 연결된 실행 파일과 마찬가지로
실행될 수 있으며 실행 파일에 정의된 기호는 다음으로 재정의될 수 없습니다.
공유 라이브러리.

-qmagic
이 옵션은 Linux 호환성을 위해 무시됩니다.

-Qy 이 옵션은 SVR4 호환성을 위해 무시됩니다.

--안심하다
--휴식 없음
기계 종속 효과가 있는 옵션입니다. 이 옵션은 일부에서만 지원됩니다.
목표.

일부 플랫폼에서는 --안심하다 옵션은 대상별 전역 최적화를 수행합니다.
링커가 다음과 같이 프로그램에서 주소 지정을 해결할 때 가능하게 됩니다.
주소 모드 완화, 새로운 명령어 합성, 짧은 버전 선택
현재 명령 및 상수 값 결합.

일부 플랫폼에서 이러한 링크 시간 전역 최적화는 심볼릭 디버깅을 만들 수 있습니다.
결과 실행이 불가능합니다. 이것은 마쓰시타의 경우로 알려져 있습니다.
MN10200 및 MN10300 프로세서 제품군.

이것이 지원되지 않는 플랫폼에서는 --안심하다 허용되지만 무시됩니다.

플랫폼에서 --안심하다 옵션이 허용됩니다 --휴식 없음 비활성화하는 데 사용할 수 있습니다
기능.

--retain-symbols-file=파일 이름
유지하다 파일에 나열된 기호 파일 이름, 다른 모든 것을 버립니다. 파일 이름
한 줄에 하나의 기호 이름이 있는 단순한 플랫 파일입니다. 이 옵션은 특히
큰 전역 기호 테이블이 있는 환경(예: VxWorks)에서 유용합니다.
런타임 메모리를 절약하기 위해 점진적으로 누적됩니다.

--retain-symbols-file 하지 지원 정의되지 않은 기호 또는 다음을 위해 필요한 기호를 버리십시오.
재배치.

다음만 지정할 수 있습니다. --retain-symbols-file 명령줄에서 한 번. 그것은 재정의 -s
-S.

-r경로=DIR
런타임 라이브러리 검색 경로에 디렉토리를 추가하십시오. ELF를 연결할 때 사용합니다.
공유 객체로 실행 가능 모두 -rpath 인수가 연결되어 전달됩니다.
런타임에 공유 객체를 찾는 데 사용하는 런타임 링커. NS -rpath
옵션은 공유 객체가 필요로 하는 공유 객체를 찾을 때도 사용됩니다.
링크에 명시적으로 포함됨 의 설명을 참조하십시오 -rpath-링크 옵션. 만약에
-rpath ELF 실행 파일을 연결할 때 사용되지 않으며, 환경의 내용
변수 "LD_RUN_PATH"가 정의된 경우 사용됩니다.

또한 -rpath 옵션은 SunOS에서도 사용할 수 있습니다. 기본적으로 SunOS에서 링커는
모든 것에서 런타임 검색 경로를 형성합니다. -L 주어진 옵션입니다. 만약 -rpath 선택권
가 사용되면 런타임 검색 경로는 다음을 사용하여 독점적으로 형성됩니다. -rpath 옵션
무시 -L 옵션. 이것은 gcc를 사용할 때 유용할 수 있습니다. -L
NFS 마운트 파일 시스템에 있을 수 있는 옵션.

다른 ELF 링커와의 호환성을 위해 -R 옵션 뒤에 디렉토리가 옵니다
파일 이름이 아닌 이름으로 처리됩니다. -rpath 옵션을 선택합니다.

-rpath-링크=DIR
ELF 또는 SunOS를 사용할 때 한 공유 라이브러리에 다른 공유 라이브러리가 필요할 수 있습니다. 이것은 다음과 같은 경우에 발생합니다.
"ld -shared" 링크는 공유 라이브러리를 입력 파일 중 하나로 포함합니다.

non-shared, non-relocateable을 수행할 때 링커가 이러한 종속성을 만나면
링크를 클릭하면 자동으로 필요한 공유 라이브러리를 찾아 포함하려고 시도합니다.
명시적으로 포함되지 않은 경우 링크에 포함됩니다. 그러한 경우, -rpath-링크 선택권
검색할 첫 번째 디렉토리 세트를 지정합니다. 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=오름차순
--sort-common=내림차순
이 옵션은 ld 오름차순으로 정렬하여 공통 기호를 정렬하거나
적절한 출력 섹션에 배치할 때 내림차순으로 정렬됩니다. 상징물
고려되는 정렬은 XNUMX바이트 이상, XNUMX바이트, XNUMX바이트, XNUMX바이트 및
XNUMX바이트. 이는 정렬 제약으로 인한 기호 사이의 간격을 방지하기 위한 것입니다. 그렇지 않은 경우
정렬 순서가 지정되면 내림차순이 가정됩니다.

--sort-section=이름
이 옵션은 링커의 모든 와일드카드 섹션 패턴에 "SORT_BY_NAME"을 적용합니다.
스크립트.

--sort-section=정렬
이 옵션은 "SORT_BY_ALIGNMENT"를 모든 와일드카드 섹션 패턴에 적용합니다.
링커 스크립트.

--파일별로 분할[=크기]
유사하게 --재할당으로 분할 그러나 다음과 같은 경우 각 입력 파일에 대해 새 출력 섹션을 생성합니다.
크기 에 도달했습니다. 크기 지정하지 않으면 기본값은 1입니다.

--재지정별 분할[=계산]
단일 출력 섹션이
파일이 다음보다 많이 포함되어 있습니다. 계산 재배치. 이것은 거대한
COFF 개체를 사용하여 특정 실시간 커널로 다운로드하기 위한 재배치 가능한 파일
파일 형식; COFF는 단일 위치에서 65535개 이상의 재배치를 나타낼 수 없기 때문에
부분. 그렇지 않은 개체 파일 형식에서는 작동하지 않습니다.
임의의 섹션을 지원합니다. 링커는 개별 입력 섹션을 분할하지 않습니다.
재배포를 위해 단일 입력 섹션에 계산 재배치
하나의 출력 섹션에는 많은 재배치가 포함될 것입니다. 계산 기본값은
32768.

--통계
실행과 같은 링커 작업에 대한 통계를 계산하고 표시합니다.
시간과 메모리 사용량.

--sysroot=예배 규칙서
용도 예배 규칙서 구성 시간 기본값을 재정의하는 sysroot의 위치로.
이 옵션은 다음을 사용하여 구성된 링커에서만 지원됩니다. --sysroot와 함께.

--전통 형식
일부 대상의 경우 출력 ld 어떤 면에서 일부의 출력과 다릅니다.
기존 링커. 이 스위치 요청 ld 대신 기존 형식을 사용합니다.

예를 들어 SunOS에서 ld 기호 문자열 테이블의 중복 항목을 결합합니다. 이것
전체 디버깅 정보가 포함된 출력 파일의 크기를 30개 이상 줄일 수 있습니다.
퍼센트. 불행히도, SunOS "dbx" 프로그램은 결과 프로그램을 읽을 수 없습니다
("gdb"는 문제가 없습니다). NS --전통 형식 스위치가 알려줍니다 ld 결합하지 않기 위해
중복 항목.

--섹션 시작=섹션 이름=조직
에 의해 제공된 절대 주소에서 출력 파일의 섹션을 찾습니다. 조직. 당신은 사용할 수 있습니다
이 옵션은 명령에서 여러 섹션을 찾는 데 필요한 만큼
줄입니다. 조직 단일 XNUMX진수 정수여야 합니다. 다른 링커와의 호환성을 위해
당신은 선행을 생략할 수 있습니다 0x 일반적으로 XNUMX진수 값과 연결됩니다. 참고 :
사이에 공백이 없어야 합니다. 섹션 이름, 등호("="), 그리고 조직.

-Tbss=조직
-데이터=조직
-문자=조직
과 동일 --섹션 시작, ".bss", ".data" 또는 ".text"를 섹션 이름.

-Ttext-세그먼트=조직
ELF 실행 파일을 만들 때 텍스트의 첫 번째 바이트 주소를 설정합니다.
세그먼트.

-트로데이터 세그먼트=조직
읽기 전용 데이터가 있는 대상에 대해 ELF 실행 파일 또는 공유 개체를 생성할 때
실행 가능한 텍스트와 별개의 자체 세그먼트에 있으면 주소를 설정합니다.
읽기 전용 데이터 세그먼트의 첫 번째 바이트.

-Tldata-세그먼트=조직
x86-64 중형 메모리 모델용 ELF 실행 파일 또는 공유 개체를 생성할 때
ldata 세그먼트의 첫 번째 바이트 주소를 설정합니다.

--unresolved-symbols=방법
해결되지 않은 기호를 처리하는 방법을 결정합니다. 에 대해 XNUMX가지 가능한 값이 있습니다.
방법:

전부다 무시해라
해결되지 않은 기호를 보고하지 마십시오.

모두 보고하다
해결되지 않은 모든 기호를 보고합니다. 이것이 기본값입니다.

개체 파일에서 무시
공유 라이브러리에 포함된 확인되지 않은 기호를 보고하지만 무시합니다.
일반 개체 파일에서 온 경우.

공유 라이브러리 무시
일반 개체 파일에서 오는 해결되지 않은 기호를 보고하지만 다음과 같은 경우 무시합니다.
그들은 공유 라이브러리에서 왔습니다. 동적 생성 시 유용할 수 있습니다.
바이너리이며 참조해야 하는 모든 공유 라이브러리가
링커의 명령줄에 포함됩니다.

자체적으로 공유 라이브러리의 동작을 제어할 수도 있습니다.
--[no-]allow-shlib-정의되지 않음 옵션을 선택합니다.

일반적으로 링커는 보고된 확인되지 않은 각 기호에 대해 오류 메시지를 생성합니다.
하지만 옵션 --warn-unresolved-symbols 경고로 변경할 수 있습니다.

--dll-상세
--장황한[=NUMBER]
에 대한 버전 번호 표시 ld 지원되는 링커 에뮬레이션을 나열합니다. 표시하다
어떤 입력 파일을 열 수 있고 열 수 없습니다. 사용 중인 링커 스크립트 표시
링커. 선택사항인 경우 NUMBER 인수 > 1, 플러그인 기호 상태도
표시됩니다.

--버전 스크립트=버전 스크립트 파일
링커에 대한 버전 스크립트의 이름을 지정합니다. 이것은 일반적으로 다음과 같은 경우에 사용됩니다.
버전에 대한 추가 정보를 지정하기 위해 공유 라이브러리 생성
생성 중인 라이브러리의 계층 구조입니다. 이 옵션은 ELF에서만 완전히 지원됩니다.
공유 라이브러리를 지원하는 플랫폼 보다 버전. 에서 부분적으로 지원됩니다.
버전 스크립트를 사용하여 자동 내보내기에서 기호 가시성을 필터링할 수 있는 PE 플랫폼
모드: 표시된 모든 기호 지방의 버전 스크립트에서 내보내지지 않습니다.

--경고-공통
공통 기호가 다른 공통 기호 또는 기호와 결합될 때 경고
정의. 유닉스 링커는 이 다소 엉성한 관행을 허용하지만 일부 링커는
다른 운영 체제는 그렇지 않습니다. 이 옵션을 사용하면 잠재적인 문제를 찾을 수 있습니다.
전역 기호 결합에서. 불행히도 일부 C 라이브러리는 이 방식을 사용하므로
라이브러리와 프로그램에서 기호에 대한 경고를 받을 수 있습니다.

여기에 C 예제로 설명된 세 가지 종류의 전역 기호가 있습니다.

INT i = 1;
출력 파일의 초기화된 데이터 섹션에 들어가는 정의.

외부 INT i;
공간을 할당하지 않는 정의되지 않은 참조입니다. 다음 중 하나가 있어야 합니다.
어딘가에 변수에 대한 정의 또는 공통 기호.

INT i;
일반적인 기호입니다. 변수에 대한 공통 기호가 하나 이상 있는 경우
출력 파일의 초기화되지 않은 데이터 영역으로 이동합니다. 링커 병합
동일한 변수에 대한 여러 공통 기호를 단일 기호로. 만약 그들이
크기가 다른 경우 가장 큰 크기를 선택합니다. 링커는 공통 기호를 켭니다.
동일한 변수의 정의가 있는 경우 선언으로.

또한 --경고-공통 옵션은 XNUMX가지 종류의 경고를 생성할 수 있습니다. 각 경고는 다음으로 구성됩니다.
한 쌍의 라인: 첫 번째는 방금 만난 기호를 설명하고 두 번째는
동일한 이름으로 발견된 이전 기호를 설명합니다. 둘 중 하나 또는 둘 다
기호는 공통 기호가 됩니다.

1. 이미 정의가 있기 때문에 공통 기호를 참조로 전환
상징을 위해.

( ): 경고: `의 공통 '
정의에 의해 재정의됨
( ): 경고: 여기에 정의됨

2. 나중에 정의하기 때문에 공통 기호를 참조로 전환
기호가 나타납니다. 이 경우를 제외하고는 이전의 경우와 동일합니다.
기호는 다른 순서로 발생합니다.

( ): 경고: `의 정의 '
우선 공통
( ): 경고: 공통이 여기에 있습니다.

3. 공통 심볼을 이전의 동일한 크기의 공통 심볼과 병합합니다.

( ): 경고: 다중 공통
`의 '
( ): 경고: 이전 공통이 여기에 있습니다.

4. 공통 심볼을 이전의 더 큰 공통 심볼과 병합합니다.

( ): 경고: `의 공통 '
더 큰 공통으로 재정의됨
( ): 경고: 더 큰 공통이 여기에 있습니다.

5. 공통 심볼을 이전의 더 작은 공통 심볼과 병합합니다. 이것은 동일하다
기호가 다른 위치에서 만나는 것을 제외하고는 이전의 경우와 같습니다.
주문.

( ): 경고: `의 공통 '
더 작은 공통 재정의
( ): 경고: 더 작은 공통이 여기에 있습니다.

--warn-생성자
전역 생성자가 사용되면 경고합니다. 이것은 몇 가지 목적 파일에만 유용합니다.
형식. COFF 또는 ELF와 같은 형식의 경우 링커는 전역 사용을 감지할 수 없습니다.
생성자.

--warn-multiple-gp
출력 파일에 여러 글로벌 포인터 값이 필요한 경우 경고합니다. 이것은 단지
Alpha와 같은 특정 프로세서에 의미가 있습니다. 특히 일부 프로세서
특별한 섹션에 큰 값의 상수를 넣으십시오. 특수 레지스터(글로벌
포인터)가 이 섹션의 중간을 가리키므로 상수를 로드할 수 있습니다.
베이스 레지스터 상대 주소 지정 모드를 통해 효율적으로 베이스의 오프셋 이후-
레지스터 상대 모드는 고정되고 상대적으로 작습니다(예: 16비트).
상수 풀의 최대 크기. 따라서 대규모 프로그램에서는 종종 다음을 수행해야 합니다.
가능한 모든 주소를 지정할 수 있도록 여러 전역 포인터 값을 사용합니다.
상수. 이 옵션을 사용하면 이 경우가 발생할 때마다 경고가 발행됩니다.

--경고-한 번
다음을 참조하는 모듈당 한 번이 아니라 정의되지 않은 각 기호에 대해 한 번만 경고합니다.
그것.

--warn-section-align
정렬로 인해 출력 섹션의 주소가 변경된 경우 경고합니다. 일반적으로,
정렬은 입력 섹션에 의해 설정됩니다. 주소는 다음과 같은 경우에만 변경됩니다.
명시적으로 지정되지 않음; 즉, "SECTIONS" 명령이 시작을 지정하지 않으면
섹션의 주소입니다.

--warn-shared-textrel
링커가 공유 개체에 DT_TEXTREL을 추가하면 경고합니다.

--warn-alternate-em
개체에 대체 ELF 기계어 코드가 있으면 경고합니다.

--warn-unresolved-symbols
링커가 확인되지 않은 기호를 보고할 경우(옵션 참조
--unresolved-symbols) 일반적으로 오류가 발생합니다. 이 옵션은
대신 경고를 생성하십시오.

--error-unresolved-symbols
이것은 보고할 때 오류를 생성하는 링커의 기본 동작을 복원합니다.
해결되지 않은 기호.

--전체 아카이브
다음 명령줄에 언급된 각 아카이브에 대해 --전체 아카이브 선택권,
파일을 검색하는 대신 링크의 아카이브에 있는 모든 개체 파일을 포함합니다.
필요한 개체 파일에 대한 아카이브. 이것은 일반적으로 아카이브 파일을 전환하는 데 사용됩니다.
모든 객체가 결과 공유 라이브러리에 포함되도록 강제로 공유 라이브러리로
도서관. 이 옵션은 두 번 이상 사용할 수 있습니다.

gcc에서 이 옵션을 사용할 때 두 가지 참고 사항: 첫째, gcc는 이 옵션에 대해 알지 못합니다.
그래서 당신은 사용해야합니다 -Wl,-전체 아카이브. 둘째, 사용하는 것을 잊지 마십시오
-Wl,-no-whole-archive 아카이브 목록 뒤에 gcc가 자체 목록을 추가하기 때문입니다.
아카이브를 링크에 추가하고 이 플래그가 해당 아카이브에도 영향을 미치기를 원하지 않을 수 있습니다.

--랩=상징
래퍼 함수 사용 상징. 정의되지 않은 참조 상징 해결될 것이다
"__랩_상징". "__real_에 대한 정의되지 않은 참조상징" 로 해결됩니다
상징.

이것은 시스템 기능에 대한 래퍼를 제공하는 데 사용할 수 있습니다. 래퍼 함수
"__wrap_상징". 시스템 기능을 호출하려면
전화 "__real_상징".

다음은 간단한 예입니다.

무효의 *
__wrap_malloc(크기_t c)
{
printf("malloc이 %zu로 호출되었습니다\n", c);
반환 __real_malloc(c);
}

다음을 사용하여 이 파일에 다른 코드를 연결하는 경우 --포장하다 Malloc, "malloc"에 대한 모든 호출
대신 "__wrap_malloc" 함수를 호출합니다. "__real_malloc"에 대한 호출
"__wrap_malloc"은 실제 "malloc" 함수를 호출합니다.

"__real_malloc" 함수도 제공하여 링크가 없는 링크가
--포장하다 옵션이 성공합니다. 이렇게 하면 의 정의를 넣으면 안 됩니다.
"__wrap_malloc"과 동일한 파일의 "__real_malloc"; 그렇게 하면 어셈블러가
링커가 "malloc"으로 래핑하기 전에 호출을 해결합니다.

--eh-frame-hdr
".eh_frame_hdr" 섹션 및 ELF "PT_GNU_EH_FRAME" 세그먼트 헤더 생성을 요청합니다.

--no-ld-generated-unwind-info
다음과 같은 링커 생성 코드 섹션에 대한 ".eh_frame" 해제 정보 생성 요청
PLT. 링커에서 생성한 해제 정보가 지원되는 경우 이 옵션은 기본적으로 켜져 있습니다.

--enable-new-dtags
--disable-new-dtags
이 링커는 ELF에서 새로운 동적 태그를 생성할 수 있습니다. 그러나 구형 ELF 시스템은 그렇지 않을 수 있습니다.
그들을 이해하십시오. 지정하는 경우 --enable-new-dtags, 새 동적 태그는
필요에 따라 생성되며 이전 동적 태그는 생략됩니다. 지정하는 경우
--disable-new-dtags, 새 동적 태그가 생성되지 않습니다. 기본적으로 새로운 동적
태그가 생성되지 않습니다. 이러한 옵션은 ELF 시스템에서만 사용할 수 있습니다.

--해시 크기=번호
링커 해시 테이블의 기본 크기를 에 가까운 소수로 설정합니다. 번호.
이 값을 늘리면 링커가 해당 작업을 수행하는 데 걸리는 시간을 줄일 수 있습니다.
링커의 메모리 요구 사항을 늘리는 대신 작업을 수행합니다. 비슷하게
이 값을 줄이면 속도를 희생시키면서 메모리 요구 사항을 줄일 수 있습니다.

--해시 스타일=스타일
링커의 해시 테이블 유형을 설정합니다. 스타일 클래식 ELF의 경우 "sysv"일 수 있습니다.
".hash" 섹션, 새로운 스타일 GNU의 경우 "gnu" ".gnu.hash" 섹션 또는 둘 다에 대한 "both"
고전적인 ELF ".hash" 및 새로운 스타일의 GNU ".gnu.hash" 해시 테이블. 기본값은 "sysv"입니다.

--compress-debug-sections=없음
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
ELF 플랫폼에서 이 옵션은 DWARF 디버그 섹션이 다음을 사용하여 압축되는 방식을 제어합니다.
즐리브. --compress-debug-sections=없음 DWARF 디버그 섹션을 압축하지 않습니다.
--compress-debug-sections=zlib-gnu DWARF 디버그 섹션을 압축하고 디버그 이름을 바꿉니다.
시작하는 섹션 이름 .zdebug 대신 .디버그. --compress-debug-sections=zlib
--compress-debug-sections=zlib-gabi DWARF 디버그 섹션 압축
ELF ABI의 SHF_COMPRESSED. 기본 동작은
관련된 대상 및 도구 체인을 빌드하는 데 사용되는 구성 옵션. 기본값
링커의 출력을 검사하여 결정할 수 있습니다. --도움 옵션을 선택합니다.

--메모리 오버헤드 감소
이 옵션은 링크를 희생하여 ld 런타임에 메모리 요구 사항을 줄입니다.
속도. 이것은 링크 맵 파일에 대한 이전 O(n^2) 알고리즘을 선택하기 위해 도입되었습니다.
생성을 위해 약 40% 더 많은 메모리를 사용하는 새로운 O(n) 알고리즘보다
기호 저장.

스위치의 또 다른 효과는 기본 해시 테이블 크기를 1021로 설정하는 것입니다.
링커의 실행 시간을 늘리는 대신 메모리를 다시 절약합니다. 이것은 수행되지 않습니다
그러나 만약 --해시 크기 스위치가 사용되었습니다.

또한 --메모리 오버헤드 감소 스위치를 사용하여 다른 절충안을 활성화할 수도 있습니다.
링커의 미래 버전.

--빌드 아이디
--빌드 아이디=스타일
".note.gnu.build-id" ELF 메모 섹션 또는 ".buildid" COFF 생성 요청
부분. 메모의 내용은 이 연결된 파일을 식별하는 고유한 비트입니다.
스타일 128개의 임의 비트를 사용하려면 "uuid"가 될 수 있고, 1비트 SHA160 해시를 사용하려면 "sha1"이 될 수 있습니다.
출력 내용의 규범적인 부분, "md5"는 128비트 MD5 해시를 사용합니다.
출력 내용의 규범적인 부분 또는 "0x육각 문자열" 선택한 비트 문자열을 사용하려면
짝수의 XNUMX진수로 지정됩니다("-" 및 ":" 문자 사이
숫자 쌍은 무시됩니다). 만약에 스타일 생략하면 "sha1"이 사용됩니다.

"md5" 및 "sha1" 스타일은 항상 동일한 식별자를 생성합니다.
동일한 출력 파일이지만 동일하지 않은 모든 출력 파일 중에서 고유합니다. 그것은이다
파일 내용에 대한 체크섬으로 비교하기 위한 것이 아닙니다. 링크된 파일은
나중에 다른 도구에 의해 변경되지만 원본을 식별하는 빌드 ID 비트 문자열
링크된 파일은 변경되지 않습니다.

"없음" 전달 스타일 이전에 "--build-id" 옵션에서 설정을 비활성화합니다.
명령줄.

i386 PE 링커는 다음을 지원합니다. -공유 출력이 되도록 하는 옵션
일반 실행 파일 대신 동적으로 연결된 라이브러리(DLL). 이름을 지어야 합니다.
이 옵션을 사용할 때 "*.dll"을 출력합니다. 또한 링커는
개체처럼 링커 명령줄에 지정될 수 있는 표준 "*.def" 파일
파일(사실, 심볼을 내보내는 아카이브보다 먼저 가져와야 합니다.
일반 오브젝트 파일과 마찬가지로 링크됨).

모든 대상에 공통적인 옵션 외에도 i386 PE 링커는 추가 지원
i386 PE 대상과 관련된 명령줄 옵션. 값을 취하는 옵션
공백이나 등호로 값과 구분할 수 있습니다.

--add-stdcall-alias
주어진 경우 stdcall 접미사가 있는 기호(@nn) 있는 그대로 및 함께 내보내집니다.
접미사 제거. [이 옵션은 링커의 i386 PE 대상 포트에만 해당됩니다.]

--베이스 파일 파일
용도 파일 모든 기본 주소를 저장할 파일의 이름으로
DLL을 생성하는 데 필요한 재배치 DLL 도구. [i386 PE 전용입니다.
옵션]

--dll
일반 실행 파일 대신 DLL을 만듭니다. 당신은 또한 사용할 수 있습니다 -공유 또는 지정
주어진 ".def" 파일의 "LIBRARY". [이 옵션은 대상 i386 PE에만 해당됩니다.
링커의 포트]

--enable-long-section-names
--disable-long-section-names
COFF 개체 형식의 PE 변형은 다음을 사용할 수 있는 확장을 추가합니다.
섹션 이름이 XNUMX자보다 길면 COFF에 대한 일반적인 제한입니다. 기본적으로,
이 이름은 완전히 연결된 실행 이미지가 허용되지 않으므로 개체 파일에서만 허용됩니다.
더 긴 이름을 지원하는 데 필요한 COFF 문자열 테이블을 수행합니다. GNU 확장으로,
실행 가능한 이미지에서도 사용을 허용하거나 (아마도
무의미하게!) 이 두 가지 옵션을 사용하여 개체 파일에서 이를 허용하지 않습니다. 실행 파일
이러한 긴 섹션 이름으로 생성된 이미지는 약간 비표준입니다.
그들은 문자열 테이블을 수행하고 비 GNU로 검사할 때 혼란스러운 출력을 생성할 수 있습니다.
파일 뷰어 및 덤퍼와 같은 PE 인식 도구. 그러나 GDB는 다음의 사용에 의존합니다.
실행 파일에서 Dwarf-2 디버그 정보 섹션을 찾기 위한 PE 긴 섹션 이름
런타임 시 이미지이므로 명령줄에 두 옵션이 모두 지정되지 않은 경우 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 대상 포트]

--선행 밑줄
--앞에 밑줄 없음
대부분의 대상에 대해 기본 기호 접두사는 밑줄이며 대상의
설명. 이 옵션을 사용하면 기본 밑줄을 비활성화/활성화할 수 있습니다.
기호 접두사.

--export-all-symbols
주어진 경우 DLL을 빌드하는 데 사용되는 개체의 모든 전역 기호는 다음에서 내보냅니다.
DLL. 그렇지 않으면 내보낼 항목이 없는 경우 이것이 기본값입니다.
기호. 기호를 DEF 파일을 통해 명시적으로 내보내거나 암시적으로 내보내는 경우
함수 속성을 통해 기본값은 이 옵션이 없으면 다른 것을 내보내지 않는 것입니다.
주어진다. 기호 "DllMain@12", "DllEntryPoint@0",
"DllMainCRTStartup@12" 및 "impure_ptr"은 자동으로 내보내지지 않습니다. 또한,
다른 DLL에서 가져온 기호는 다시 내보내지지 않으며 다음을 지정하는 기호도 내보내지 않습니다.
"_head_"로 시작하거나 다음으로 끝나는 DLL의 내부 레이아웃
"_이름". 또한 "libgcc", "libstd++", "libmingw32" 또는
"crtX.o"가 내보내집니다. 이름이 "__rtti_" 또는 "__builtin_"으로 시작하는 기호
C++ DLL을 돕기 위해 내보내지지 않습니다. 마지막으로 광범위한 목록이 있습니다.
내보내지지 않는 cygwin-private 기호(분명히 이것은 빌드할 때 적용됩니다.
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" 및 "환경". [이 옵션은 대상 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 헤더의 "특성" 필드에 적절한 비트가 설정됩니다.
이 실행 파일이 2GB보다 큰 가상 주소를 지원함을 나타냅니다.
/3GB 또는 /USERVA=와 함께 사용해야 합니다.가치 메가바이트 스위치 인
BOOT.INI의 "[운영 체제]" 섹션. 그렇지 않으면 이 비트는 효과가 없습니다.
[이 옵션은 링커의 PE 대상 포트에만 해당됩니다.]

--disable-large-address-aware
이전 효과를 되돌립니다. --큰 주소 인식 옵션. 이것은 다음과 같은 경우에 유용합니다.
--큰 주소 인식 항상 컴파일러 드라이버(예: Cygwin gcc)에 의해 설정되며
실행 파일은 2GB보다 큰 가상 주소를 지원하지 않습니다. [이 옵션은
링커의 PE 대상 포트에만 해당]

--주요 이미지 버전 가치
"이미지 버전"의 주요 번호를 설정합니다. 기본값은 1입니다. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]

--주요 운영 체제 버전 가치
"os 버전"의 주 번호를 설정합니다. 기본값은 4입니다. [이 옵션은 특정
링커의 i386 PE 대상 포트로]

--주요 하위 시스템 버전 가치
"하위 시스템 버전"의 주 번호를 설정합니다. 기본값은 4입니다. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]

--부 이미지 버전 가치
"이미지 버전"의 부 번호를 설정합니다. 기본값은 0입니다. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]

--부 OS 버전 가치
"os 버전"의 부 번호를 설정합니다. 기본값은 0입니다. [이 옵션은 특정
링커의 i386 PE 대상 포트로]

--minor-subsystem-version 가치
"하위 시스템 버전"의 부 번호를 설정합니다. 기본값은 0입니다. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]

--출력 정의 파일
링커는 파일을 생성합니다. 파일 에 해당하는 DEF 파일을 포함합니다.
링커가 생성하는 DLL입니다. 이 DEF 파일("*.def"라고 함)은
"dlltool"을 사용하여 가져오기 라이브러리를 만드는 데 사용하거나 다음 항목에 대한 참조로 사용할 수 있습니다.
자동 또는 암시적으로 내보낸 기호. [이 옵션은 i386 PE에만 해당됩니다.
링커의 대상 포트]

--out-implib 파일
링커는 파일을 생성합니다. 파일 에 해당하는 가져오기 라이브러리가 포함됩니다.
링커가 생성하는 DLL입니다. 이 가져오기 lib("*.dll.a" 또는
"*.a"는 생성된 DLL에 대해 클라이언트를 연결하는 데 사용할 수 있습니다. 이 행동은
별도의 "dlltool" 가져오기 라이브러리 생성 단계를 건너뛸 수 있습니다. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]

--enable-auto-image-base
--enable-auto-image-base=가치
선택적으로 base로 시작하는 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 대상 포트에만 해당됩니다.]

--enable-auto-import
DLL에서 DATA 가져오기를 위해 "_symbol"을 "__imp__symbol"에 정교하게 연결합니다.
가져오기 라이브러리를 빌드할 때 필요한 썽킹 기호를 생성합니다.
DATA 내보내기. 참고: '자동 가져오기' 확장을 사용하면 텍스트가
쓰기 가능하게 만들 이미지 파일의 섹션. 이것은 PE-COFF를 준수하지 않습니다.
Microsoft에서 게시한 형식 사양.

참고 - '자동 가져오기' 확장을 사용하면 읽기 전용 데이터도 발생하므로
일반적으로 .rdata 섹션에 배치되어 .data 섹션에 배치됩니다.
대신에. 이것은 설명된 const의 문제를 해결하기 위한 것입니다.
여기에 : http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html

'자동 가져오기'를 사용하면 일반적으로 '그냥 작동'합니다.
메시지:

"변수 ' '은(는) 자동으로 가져올 수 없습니다. ld's에 대한 설명서를 읽으십시오.
자세한 내용은 "--enable-auto-import"를 참조하십시오."

이 메시지는 일부 (하위) 표현식이 궁극적으로 다음에 의해 제공된 주소에 액세스할 때 발생합니다.
두 상수의 합(Win32 가져오기 테이블은 하나만 허용). 이
DLL에서 가져온 구조체 변수의 멤버 필드에 대한 액세스를 포함하여 발생할 수 있습니다.
뿐만 아니라 DLL에서 가져온 배열 변수에 상수 인덱스를 사용합니다. 어느
다중 단어 변수(배열, 구조체, long long 등)가 이 오류 조건을 유발할 수 있습니다.
그러나 문제가 되는 내보낸 변수의 정확한 데이터 유형에 관계없이 ld는
항상 그것을 감지하고 경고를 발행하고 종료하십시오.

데이터 유형에 관계없이 이 어려움을 해결하는 몇 가지 방법이 있습니다.
내보낸 변수:

한 가지 방법은 --enable-runtime-pseudo-reloc 스위치를 사용하는 것입니다. 이것은 과제를 남깁니다.
이 방법이 작동하도록 런타임 환경에 대한 클라이언트 코드의 참조 조정
런타임 환경이 이 기능을 지원하는 경우에만.

두 번째 해결책은 '상수' 중 하나를 변수로 강제하는 것입니다. 즉,
알 수 없고 컴파일 시간에 최적화할 수 없습니다. 배열의 경우 두 가지 가능성이 있습니다.
a) indexee(배열의 주소)를 변수로 만들거나 b) 'constant' 인덱스를 만듭니다.
변수. 따라서:

외부 유형 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 long long extern_ll;
extern_ll -->
{ 휘발성 long long * local_ll=&extern_ll; *local_ll }

이 어려움을 처리하는 세 번째 방법은 '자동 가져오기'를 포기하는 것입니다.
기호를 위반하고 "__declspec(dllimport)"로 표시합니다. 그러나 실제로 그
DLL을 빌드 중인지 여부를 나타내기 위해 컴파일 타임 #defines를 사용해야 합니다.
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)
#그밖에
#define 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 대상 포트에만 해당됩니다.
링커]

--disable-auto-import
DATA에 대해 "_symbol"을 "__imp__symbol"에 정교하게 연결하려고 시도하지 마십시오.
DLL에서 가져옵니다. [이 옵션은 i386 PE 대상 포트에만 해당됩니다.
링커]

--enable-runtime-pseudo-reloc
코드에 --enable-auto-import 섹션에 설명된 표현식이 포함된 경우, 즉,
오프셋이 XNUMX이 아닌 DLL에서 DATA를 가져오는 경우 이 스위치는 다음과 같은 벡터를 생성합니다.
런타임 환경에서 조정할 수 있는 '런타임 의사 재배치'
클라이언트 코드에서 그러한 데이터에 대한 참조. [이 옵션은 i386 PE에만 해당됩니다.
링커의 대상 포트]

--disable-runtime-pseudo-reloc
DLL에서 XNUMX이 아닌 오프셋 DATA 가져오기에 대해 의사 재배치를 생성하지 마십시오. [이것
옵션은 링커의 i386 PE 대상 포트에 따라 다릅니다.]

--enable-extra-pe-debug
자동 가져오기 기호 썽킹과 관련된 추가 디버그 정보를 표시합니다. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]

--섹션 정렬
단면 정렬을 설정합니다. 메모리의 섹션은 항상 다음 주소에서 시작됩니다.
이 숫자의 배수입니다. 기본값은 0x1000입니다. [이 옵션은 특정
링커의 i386 PE 대상 포트]

--스택 비축
--스택 비축,범하다
다음으로 사용할 예약(및 선택적으로 커밋)할 메모리의 바이트 수를 지정합니다.
이 프로그램의 스택. 기본값은 2MB 예약, 4K 커밋입니다. [이 옵션은
링커의 i386 PE 대상 포트에만 해당]

--하위 시스템 어느
--하위 시스템 어느:주요한
--하위 시스템 어느:주요한.미성년자
프로그램이 실행될 하위 시스템을 지정합니다. 에 대한 법적 가치
어느 "네이티브", "windows", "console", "posix" 및 "xbox"입니다. 당신은 선택적으로 설정할 수 있습니다
하위 시스템 버전도. 숫자 값도 허용됩니다. 어느. [이 옵션은
링커의 i386 PE 대상 포트에만 해당됩니다.]

다음 옵션은 PE 파일의 "DllCharacteristics" 필드에 플래그를 설정합니다.
header: [이 옵션은 링커의 PE 대상 포트에만 해당됩니다.]

--고엔트로피-va
이미지는 64비트 ASLR(주소 공간 레이아웃 랜덤화)과 호환됩니다.

--다이나믹베이스
이미지 기본 주소는 주소 공간 레이아웃 무작위화를 사용하여 재배치될 수 있습니다.
(ASLR). 이 기능은 i386 PE 대상용 MS Windows Vista와 함께 도입되었습니다.

--강제 통합
코드 무결성 검사가 시행됩니다.

--nxcompat
이미지는 데이터 실행 방지와 호환됩니다. 이 기능은
i2 PE 대상용 MS Windows XP SP386와 함께 도입되었습니다.

--분리 없음
이미지가 격리를 이해하더라도 이미지를 격리하지 마십시오.

--안돼
이미지는 SEH를 사용하지 않습니다. 이 이미지에서 SE 핸들러를 호출할 수 없습니다.

--바인드 없음
이 이미지를 묶지 마십시오.

--wdmdriver
드라이버는 MS Windows 드라이버 모델을 사용합니다.

--차와레
이미지는 터미널 서버를 인식합니다.

--삽입-타임스탬프
--no-insert-timestamp
이미지에 실제 타임스탬프를 삽입합니다. 이것은 일치하는 기본 동작입니다.
레거시 코드이며 이미지가 다른 독점 도구와 함께 작동함을 의미합니다. NS
이 기본값의 문제는 약간 다른 이미지가 생성된다는 것입니다.
동일한 소스가 링크될 때마다 생성됩니다. 옵션 --no-insert-timestamp
타임스탬프에 대해 XNUMX 값을 삽입하는 데 사용됩니다. 이렇게 하면 생성된 바이너리가
동일한 소스에서 동일하게 비교됩니다.

C6X uClinux 대상은 DSBT라는 바이너리 형식을 사용하여 공유 라이브러리를 지원합니다. 각
시스템의 공유 라이브러리에는 고유 인덱스가 있어야 합니다. 모든 실행 파일은 인덱스를 사용합니다.
0.

--dsbt-크기 크기
이 옵션은 현재 실행 파일 또는 공유 파일의 DSBT 항목 수를 설정합니다.
도서관 크기. 기본값은 64개 항목이 있는 테이블을 만드는 것입니다.

--dsbt-인덱스 색인
이 옵션은 현재 실행 파일 또는 공유 라이브러리의 DSBT 인덱스를 다음으로 설정합니다. 색인.
기본값은 실행 파일 생성에 적합한 0입니다. 공유하는 경우
라이브러리가 0의 DSBT 인덱스로 생성된 경우 "R_C6000_DSBT_INDEX" 재배치가
출력 파일에 복사됩니다.

또한 --no-merge-exidx-entries 스위치는 인접 exidx 항목의 병합을 비활성화합니다.
프레임 해제 정보.

68HC11 및 68HC12 링커는 메모리 뱅크를 제어하는 ​​특정 옵션을 지원합니다.
스위칭 매핑 및 트램펄린 코드 생성.

-- 트램펄린 없음
이 옵션은 트램펄린 생성을 비활성화합니다. 기본적으로 트램폴린은
"jsr" 명령어를 사용하여 호출되는 각 far 함수에 대해 생성됩니다(이
far 함수에 대한 포인터가 취해질 때 발생합니다).

--은행 창구 name
이 옵션은 링커에 메모리 영역의 이름을 나타냅니다. 메모리
메모리 뱅크 창을 설명하는 사양입니다. 그러한 영역의 정의는
그런 다음 링커에서 메모리 창 내에서 페이징 및 주소를 계산하는 데 사용됩니다.

링크할 때 GOT 생성 처리를 제어하기 위해 다음 옵션이 지원됩니다.
68K 목표.

--있어=유형
이 옵션은 링커에 사용할 GOT 생성 체계를 알려줍니다. 유형 하나가 되어야 한다
of 단일, 부정, 다혈질 or 목표. 자세한 내용은 정보 항목을 참조하십시오.
...에 대한 ld.

다음 옵션은 다음과 같은 경우 microMIPS 명령어 생성을 제어하기 위해 지원됩니다.
MIPS 대상에 대한 연결.

--insn32
--no-insn32
이 옵션은 다음에 의해 생성된 코드에 사용되는 microMIPS 명령어의 선택을 제어합니다.
PLT 또는 지연 바인딩 스텁 또는 이완과 같은 링커. 만약에
--insn32 사용되는 경우 링커는 32비트 명령어 인코딩만 사용합니다. 기본적으로
또는 if --no-insn32 16비트를 포함한 모든 명령어 인코딩이 사용됩니다.
가능한 곳.

환경


의 동작을 변경할 수 있습니다. ld 환경 변수 "GNUTARGET"을 사용하여
"LDEMULATION" 및 "COLLECT_NO_DEMANGLE".

"GNUTARGET"은 사용하지 않는 경우 입력 파일 개체 형식을 결정합니다. -b (또는 동의어
--체재). 그 값은 입력 형식에 대한 BFD 이름 중 하나여야 합니다. 없는 경우
환경 속의 "GNUTARGET", ld 대상의 자연스러운 형식을 사용합니다. "그누타겟"이라면
"default"로 설정되면 BFD는 바이너리를 검사하여 입력 형식을 검색하려고 시도합니다.
입력 파일; 이 방법은 종종 성공하지만 잠재적인 모호성이 있습니다.
개체 파일 형식을 지정하는 데 사용되는 매직 번호가 다음과 같은지 확인하는 방법은 없습니다.
고유 한. 그러나 각 시스템의 BFD에 대한 구성 절차는
검색 목록에서 먼저 해당 시스템에 대한 기존 형식이므로 모호성이 해결됩니다.
협약에 찬성합니다.

"LDEMULATION"은 사용하지 않는 경우 기본 에뮬레이션을 결정합니다. -m 선택권. 그만큼
에뮬레이션은 링커 동작, 특히 기본 링커의 다양한 측면에 영향을 줄 수 있습니다.
스크립트. 다음을 사용하여 사용 가능한 에뮬레이션을 나열할 수 있습니다. --말 수가 많은 or -V 옵션. 만약
-m 옵션이 사용되지 않고 "LDEMULATION" 환경 변수가 정의되지 않은 경우
기본 에뮬레이션은 링커가 구성된 방식에 따라 다릅니다.

일반적으로 링커는 기본적으로 기호를 디맹글링합니다. 그러나 만약
"COLLECT_NO_DEMANGLE"이 환경에 설정되어 있으면 기본적으로 디망글링하지 않는 것으로 설정됩니다.
기호. 이 환경 변수는 "gcc" 링커에서 유사한 방식으로 사용됩니다.
래퍼 프로그램. 기본값은 --demangle-- 엉킴 없음
옵션을 제공합니다.

onworks.net 서비스를 사용하여 온라인으로 i686-w64-mingw32-ld 사용


Ad


Ad