• SEARCH

    통합검색
  • GAMEZONE
    • 커뮤니티
      • 공지사항
      • 유저게시판
        • 등업게시판
        • 출석체크
        • 정회원 무료자료실
      • 스크린샷
      • 인증자료실
    • 리니지
      • 게임공략 & 팁
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 메이플스토리
      • 게임공략 & 팁
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 바람의나라
      • 자유게시판
      • 자료게시판
        • 유틸자료실
        • 소스자료실
        • 클라이언트
        • 팩 자료실
      • 연구게시판
        • 개발내역
        • 질문과답변
        • 기타
      • 강의게시판
        • DR
        • CR
        • 구버전
        • 클라이언트 개조
        • 노하우 게시판
        • 게임공략 & 팁
    • 다크에덴
      • 게임공략 & 팁
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 믹스마스터
      • 게임공략 & 팁
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 라그나로크
      • 게임공략 & 팁
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 기타게임
      • 게임공략 & 팁
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 게임강의
    • 비베&포토샵
      • 자유게시판
      • 자료실
        • 일반자료실
        • 포인트 자료실
      • 노하우게시판
      • 포토샵게시판
    • 모바일
      • 게임공략
      • 포인트 자료실
      • 유틸자료실
      • 자유게시판
  • 기타게임 소스자료실
    • 기타게임 소스자료실 기타 ()
    • [Rust 공식문서 한국어 정리] ㊷. Rust 링킹(Linking) 가이드

      • 오뉴노노
      • 2026.06.08 - 12:09 263

    [Rust 공식문서 한국어 정리] ㊷. Rust 링킹(Linking) 가이드

    원문 제목: Linker — rustc Codegen Options
    작성자: Rust Compiler Team

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    📌 1. 서론 — 이 문서가 다루는 내용
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    이 문서는 Rust 컴파일러의 링킹 과정과 관련된 옵션, 전략, 그리고 고급 설정을 설명합니다.
    정적 링킹과 동적 링킹의 차이, 링커 선택, 그리고 링크 타임 최적화(LTO)를 다룹니다.
    Rust 바이너리가 외부 라이브러리와 어떻게 연결되는지, 그리고 배포 시 의존성을 어떻게 관리하는지를 중심으로 설명합니다.
    크로스 컴파일, 임베디드, 그리고 배포용 정적 바이너리 생성을 위한 링킹 전략도 포함합니다.
    시스템 프로그래밍과 배포 자동화를 다루는 개발자에게 필수적인 저수준 개념입니다.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🔑 2. 핵심 개념 4가지
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    ① 정적 링킹: 외부 라이브러리 코드를 실행 파일에 포함시켜 독립적인 바이너리를 만듭니다.
    ② 동적 링킹: 외부 라이브러리를 런타임에 로드하여 바이너리 크기를 줄이고 메모리를 공유합니다.
    ③ LTO: Link Time Optimization으로, 링크 단계에서 전체 프로그램 최적화를 수행합니다.
    ④ 링커 설정: .cargo/config.toml이나 RUSTFLAGS로 사용자 정의 링커와 옵션을 지정합니다.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    📖 3. 주요 내용 상세
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    Rust는 기본적으로 시스템 기본 링커(ld, link.exe 등)를 사용합니다.
    링커는 대상 플랫폼과 C 런타임을 결정하며, 크로스 컴파일 시에는 명시적으로 지정해야 합니다.
    CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER 환경변수나 .cargo/config.toml의 [target] 섹션으로 링커를 변경할 수 있습니다.

    정적 링킹은 musl 타겟이나 RUSTFLAGS에 -C target-feature=+crt-static을 사용하여 활성화합니다.
    정적 바이너리는 외부 의존성 없이 단일 파일로 배포할 수 있어 Docker alpine 이미지나 임베디드에 유리합니다.
    다만 바이너리 크기가 커지고, 보안 패치 시 전체 재배포가 필요하다는 단점이 있습니다.

    동적 링킹은 glibc 기반 Linux나 Windows에서 기본적으로 사용됩니다.
    동적 바이너리는 작고, 시스템 라이브러리 업데이트를 자동으로 반영하지만, 배포 환경에 동일한 라이브러리 버전이 필요합니다.
    Linux에서는 ldd 명령으로 동적 의존성을 확인할 수 있습니다.

    LTO는 링크 단계에서 크레이트 간 최적화를 수행하여 성능을 향상시킵니다.
    Cargo.toml의 [profile.release]에서 lto = true 또는 lto = "thin"으로 설정합니다.
    Thin LTO는 병렬 처리가 가능하여 Full LTO보다 빠르지만, 최적화 수준은 약간 낮을 수 있습니다.
    LTO를 활성화하면 컴파일 시간이 크게 증가하지만, 바이너리 크기와 런타임 성능이 개선됩니다.

    링크 타임에서의 심볼 충돌이나 undefined reference 오류는 의존성 순서나 링커 옵션 부족으로 발생합니다.
    Rust는 기본적으로 --extern과 -L 옵션으로 의존성을 전달하지만, 네이티브 라이브러리 연결 시에는 추가 설정이 필요할 수 있습니다.
    build.rs에서 println!("cargo:rustc-link-lib=...")와 println!("cargo:rustc-link-search=...")으로 네이티브 링크를 제어합니다.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🛠 4. 실전 활용
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    배포용 바이너리는 musl 타겟이나 crt-static으로 정적 링킹하여 의존성 문제를 제거합니다.
    릴리스 프로파일에서 LTO를 활성화하여 바이너리 크기와 성능을 최적화합니다.
    크로스 컴파일 시 .cargo/config.toml에서 타겟별 링커와 sysroot를 정확히 지정합니다.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ✅ 5. 정리
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    링킹은 Rust 바이너리 생성의 마지막 단계로, 배포 전략과 직결됩니다.
    정적/동적 링킹, LTO, 링커 설정을 상황에 맞게 선택하면 최적의 배포 결과물을 얻을 수 있습니다.
    링크 오류 발생 시 의존성 순서와 네이티브 라이브러리 경로를 우선 점검하세요.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🔗 출처 링크
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    원문: https://doc.rust-lang.org/rustc/codegen-options/index.html#linker
    Cargo Profiles: https://doc.rust-lang.org/cargo/reference/profiles.html

    #Rust #Linking #StaticLinking #DynamicLinking #LTO #Deployment #번역

    이 게시물을..
    N
    0
    0
    • [Rust 공식문서 한국어 정리] 150. Attribute Macros오뉴노노
    • 2
      오뉴노노

    오뉴노노 님의 최근 글

    [Rust 공식문서 한국어 정리] 184. PartialOrd 417 2026 06.08 [Rust 공식문서 한국어 정리] 183. Ord 384 2026 06.08 [Rust 공식문서 한국어 정리] 182. Eq 383 2026 06.08 [Rust 공식문서 한국어 정리] 181. PartialEq 505 2026 06.08 [Rust 공식문서 한국어 정리] 180. TryFrom 498 2026 06.08

    오뉴노노 님의 최근 댓글

    ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • [Rust 공식문서 한국어 정리] 150. Attribute Macros
    • 목록
      view_headline
    × CLOSE
    전체 던파 5 뮤 18 천상비 프로젝트신루 5 아이온 18 어둠의전설 28 리니지2 7 크로노스 5 칼온라인 3 기타 490
    기본 (582) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 게시판 홍보 관련 안내
      2026.08.05 - 21:44 19846
    • 포인트 획득 공지
      9
      2026.04.24 - 19:48 46334 9
    • 링크 업로드 관련 공지
      12
      2026.03.25 - 21:56 44955 12
    • 인증메일 공지
      3
      2026.03.15 - 16:42 44499 3
    • 파일링크 및 인증메일 발송 관련 문의 안내
      11
      2026.03.14 - 22:03 45456 11
    • 포인트 게시판 안내
      2026.02.28 - 19:14 45938
    • 게임존 사이트 변경 사항 안내
      9
      2026.02.26 - 01:07 47842 9
    • 소스자료는 직접 올려주세요
      2017.06.06 - 16:16 2642
    582
    기타
    [Rust 공식문서 한국어 정리] 184. PartialOrd
    오뉴노노 2026.06.08 - 15:42 417
    581
    기타
    [Rust 공식문서 한국어 정리] 183. Ord
    오뉴노노 2026.06.08 - 15:42 384
    580
    기타
    [Rust 공식문서 한국어 정리] 182. Eq
    오뉴노노 2026.06.08 - 15:42 383
    579
    기타
    [Rust 공식문서 한국어 정리] 181. PartialEq
    오뉴노노 2026.06.08 - 15:42 505
    578
    기타
    [Rust 공식문서 한국어 정리] 180. TryFrom
    오뉴노노 2026.06.08 - 15:42 498
    577
    기타
    [Rust 공식문서 한국어 정리] 179. TryInto
    오뉴노노 2026.06.08 - 15:42 452
    576
    기타
    [Rust 공식문서 한국어 정리] 178. From
    오뉴노노 2026.06.08 - 15:39 402
    575
    기타
    [Rust 공식문서 한국어 정리] 177. Into
    오뉴노노 2026.06.08 - 15:39 368
    574
    기타
    [Rust 공식문서 한국어 정리] 176. AsRef
    오뉴노노 2026.06.08 - 15:39 329
    573
    기타
    [Rust 공식문서 한국어 정리] 175. Deref
    오뉴노노 2026.06.08 - 15:39 348
    572
    기타
    [Rust 공식문서 한국어 정리] 174. Default
    오뉴노노 2026.06.08 - 15:39 321
    571
    기타
    [Rust 공식문서 한국어 정리] 173. Clone
    오뉴노노 2026.06.08 - 15:38 296
    570
    기타
    [Rust 공식문서 한국어 정리] 172. Copy
    오뉴노노 2026.06.08 - 15:38 333
    569
    기타
    [Rust 공식문서 한국어 정리] 171. Drop
    오뉴노노 2026.06.08 - 15:38 352
    568
    기타
    [Rust 공식문서 한국어 정리] 170. Weak
    오뉴노노 2026.06.08 - 15:37 328
    567
    기타
    [Rust 공식문서 한국어 정리] 169. Arc
    오뉴노노 2026.06.08 - 15:37 392
    566
    기타
    [Rust 공식문서 한국어 정리] 168. Rc
    오뉴노노 2026.06.08 - 15:37 333
    565
    기타
    [Rust 공식문서 한국어 정리] 167. Box
    오뉴노노 2026.06.08 - 15:36 451
    564
    기타
    [Rust 공식문서 한국어 정리] 166. str
    오뉴노노 2026.06.08 - 15:36 439
    563
    기타
    [Rust 공식문서 한국어 정리] 165. String
    오뉴노노 2026.06.08 - 15:36 313
    562
    기타
    [Rust 공식문서 한국어 정리] 164. HashMap
    오뉴노노 2026.06.08 - 15:36 366
    561
    기타
    [Rust 공식문서 한국어 정리] 163. Vec
    오뉴노노 2026.06.08 - 15:35 276
    560
    기타
    [Rust 공식문서 한국어 정리] 162. Result
    오뉴노노 2026.06.08 - 15:35 268
    559
    기타
    [Rust 공식문서 한국어 정리] 161. Option
    오뉴노노 2026.06.08 - 15:35 267
    558
    기타
    [Rust 공식문서 한국어 정리] 160. Iterators
    오뉴노노 2026.06.08 - 15:35 275
    557
    기타
    [Rust 공식문서 한국어 정리] 159. Closures
    오뉴노노 2026.06.08 - 15:35 444
    556
    기타
    [Rust 공식문서 한국어 정리] 158. Trait Objects
    오뉴노노 2026.06.08 - 15:34 314
    555
    기타
    [Rust 공식문서 한국어 정리] 157. Lifetimes
    오뉴노노 2026.06.08 - 15:34 357
    554
    기타
    [Rust 공식문서 한국어 정리] 156. Cargo.lock
    오뉴노노 2026.06.08 - 15:34 483
    553
    기타
    [Rust 공식문서 한국어 정리] 155. Cargo.toml
    오뉴노노 2026.06.08 - 15:34 277
    552
    기타
    [Rust 공식문서 한국어 정리] 154. Workspaces
    오뉴노노 2026.06.08 - 15:34 401
    551
    기타
    [Rust 공식문서 한국어 정리] 153. Crates
    오뉴노노 2026.06.08 - 15:33 287
    550
    기타
    [Rust 공식문서 한국어 정리] 152. Modules
    오뉴노노 2026.06.08 - 15:33 277
    549
    기타
    [Rust 공식문서 한국어 정리] 151. Proc Macros
    오뉴노노 2026.06.08 - 15:32 264
    548
    기타
    [Rust 공식문서 한국어 정리] 150. Attribute Macros
    오뉴노노 2026.06.08 - 15:32 340
    547
    기타
    [Rust 공식문서 한국어 정리] 149. cfg
    오뉴노노 2026.06.08 - 15:32 248
    546
    기타
    [Rust 공식문서 한국어 정리] 148. assert
    오뉴노노 2026.06.08 - 15:31 253
    545
    기타
    [Rust 공식문서 한국어 정리] 147. panic
    오뉴노노 2026.06.08 - 15:27 290
    544
    기타
    [Rust 공식문서 한국어 정리] 146. Error
    오뉴노노 2026.06.08 - 15:24 266
    543
    기타
    [Rust 공식문서 한국어 정리] 145. Any
    오뉴노노 2026.06.08 - 15:22 285
    542
    기타
    [Rust 공식문서 한국어 정리] 144. Unpin
    오뉴노노 2026.06.08 - 15:19 328
    541
    기타
    [Rust 공식문서 한국어 정리] 143. Pin
    오뉴노노 2026.06.08 - 15:17 294
    540
    기타
    [Rust 공식문서 한국어 정리] 142. LazyLock
    오뉴노노 2026.06.08 - 15:14 250
    539
    기타
    [Rust 공식문서 한국어 정리] 141. OnceCell
    오뉴노노 2026.06.08 - 15:11 305
    538
    기타
    [Rust 공식문서 한국어 정리] 140. Atomic
    오뉴노노 2026.06.08 - 15:06 304
    537
    기타
    [Rust 공식문서 한국어 정리] 139. RwLock
    오뉴노노 2026.06.08 - 14:34 285
    536
    기타
    [Rust 공식문서 한국어 정리] 152. Modules
    오뉴노노 2026.06.08 - 14:00 280
    535
    기타
    [Rust 공식문서 한국어 정리] 151. Proc Macros
    오뉴노노 2026.06.08 - 14:00 486
    534
    기타
    [Rust 공식문서 한국어 정리] 150. Attribute Macros
    오뉴노노 2026.06.08 - 14:00 385
    533
    기타
    [Rust 공식문서 한국어 정리] 149. cfg
    오뉴노노 2026.06.08 - 14:00 347
    • 1 2 3 4 5 6 7 8 9 10 .. 12
    • / 12 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay