# 리눅스를 위한 빠른 링크 도구, Wild

> Clean Markdown view of GeekNews topic #18899. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18899](https://news.hada.io/topic?id=18899)
- GeekNews Markdown: [https://news.hada.io/topic/18899.md](https://news.hada.io/topic/18899.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-25T11:33:18+09:00
- Updated: 2025-01-25T11:33:18+09:00
- Original source: [github.com/davidlattimore](https://github.com/davidlattimore/wild)
- Points: 1
- Comments: 1

## Topic Body

- **Wild 링크**
  - Wild는 반복적인 개발을 위해 매우 빠른 링크를 목표로 하는 도구임.
  - 아직 증분 링크는 구현되지 않았지만, 현재도 상당히 빠른 성능을 보임.
  - 프로덕션 빌드에서는 GNU ld나 LLD 같은 성숙한 링크 사용을 권장함.
  - 개발 중 빠른 빌드 시간을 원한다면 Wild를 시도해볼 수 있음.
  - x86-64 Linux에서 개발 중인 경우 사용 가능하며, 문제 발생 시 버그 리포트를 권장함.

- **설치**
  - 사전 빌드된 바이너리를 설치하려면 릴리스 페이지에서 명령어를 복사하여 사용할 수 있음.
  - 수동으로 `wild` 바이너리를 경로에 복사할 수도 있음.
  - 직접 빌드 및 설치하려면 `cargo install --locked --bin wild --git https://github.com/davidlattimore/wild.git wild` 명령어를 사용함.

- **기본 링크로 사용하기**
  - Rust 코드 빌드를 위해 Wild를 기본 링크로 사용하려면 `~/.cargo/config.toml`에 설정을 추가함.

- **Q&A**
  - **왜 또 다른 링크인가?**
    - Mold는 이미 매우 빠르지만 증분 링크를 지원하지 않음. Wild는 증분 링크를 목표로 함.
    - Rust로 작성되어 증분 링크의 복잡성을 해결할 수 있을 것으로 기대됨.
  - **작동하는 기능**
    - 현재 지원되는 플랫폼/아키텍처: Linux의 x86-64
    - 정적 링크된 바이너리, 동적 링크된 바이너리, 공유 객체(.so 파일) 출력 가능
    - Rust proc-macros와의 호환성 확인됨
    - crates.io의 인기 있는 크레이트 테스트 통과
    - 디버그 정보 지원
  - **아직 지원되지 않는 기능**
    - 증분 링크, x86-64 외의 아키텍처 지원, 다양한 링크 플래그 지원, Mac 및 Windows 지원 등

- **벤치마크**
  - Wild의 목표는 증분 링크를 통해 매우 빠른 성능을 발휘하는 것임.
  - 비증분 링크에서도 가능한 빠른 성능을 목표로 함.
  - 벤치마크 결과, 디버그 정보 없이 Wild는 매우 빠른 성능을 보임.
  - 디버그 정보가 포함된 경우 성능이 다소 저하됨.

- **Rust 코드 링크**
  - `cargo test` 명령어를 사용하여 Wild로 크레이트를 빌드하고 테스트할 수 있음.
  - Clang 컴파일러가 설치되어 있어야 하며, GCC는 임의의 링크 사용을 허용하지 않음.

- **기여**
  - Wild에 기여하는 방법에 대한 정보는 CONTRIBUTING.md를 참조함.

- **후원**
  - 이 프로젝트를 후원하면 더 오랜 기간 동안 풀타임으로 작업할 수 있음.

- **라이선스**
  - Apache License, Version 2.0 또는 MIT 라이선스 중 선택 가능.

## Comments



### Comment 33848

- Author: neo
- Created: 2025-01-25T11:33:19+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42814683) 
- mold가 AGPL에서 MIT로 라이선스 변경 후, 새로운 빠른 링커의 필요성이 줄어들었음에도 불구하고, 이 프로젝트가 등장한 것이 놀라움. 일부 경우 mold보다 2배 빠르다는 점에서 주목할 만함

- 이전에 이 프로젝트를 살펴봤지만, 아직 프로덕션 준비가 안 된 것으로 보임. 그래서 여전히 mold를 사용 중임

- macOS 사용자에게는 Apple이 1~2년 전에 새로운 링커를 출시했으며, Rust와 함께 사용할 경우 config.toml에 특정 설정을 추가해야 함

- C/C++ 컴파일러가 링크 단계 없이 전체 프로그램을 하나의 단위로 빌드하는 것이 신선할 것임. 외부 라이브러리는 대부분 동적으로 링크되므로, 링크 과정을 제거해도 문제되지 않음

- 2008년 Gold, 2015년 Lld, 2021년 mold 등 빠른 링커에 대한 관심이 지속적으로 증가하고 있음

- Rust의 인기로 인해 빠른 링커에 대한 관심이 증가하고 있으며, Rust 바이너리는 링크 단계에서 시간이 많이 소요됨. 이는 Rust만의 문제가 아니라 정적 링크와 LLVM의 최적화 때문임

- John Levine의 "Linkers and Loaders"는 관련된 좋은 책이며, 몇 년 전에 읽었을 때 매우 흥미로웠음

- wild, mold, ld의 성능을 비교한 결과, 잘 구조화된 프로젝트에서는 링크 시간이 큰 문제가 되지 않음을 알게 됨

- 성능 벤치마크는 2020년 모델의 System76 Lemur pro 노트북에서 실행되었으며, 4코어(8스레드)와 42GB RAM을 가짐

- 링커가 무엇인지 궁금해하는 사람도 있음

- Linux 커널을 링크할 수 있는지 묻는 질문이 있었으며, 이는 LLD의 유용한 이정표였음
