GN⁺: 실제로 이식 가능한 실행 파일을 빌드하기 위해 GCC를 패치하는 것
(ahgamut.github.io)- 소프트웨어 엔지니어가 GCC에 대한 패치를 작성하여 Cosmopolitan Libc를 사용하여 실제로 이식 가능한 실행 파일을 간소화했습니다.
- 이 패치를 통해 bash, curl, git 및 gcc 자체와 같은 인기 있는 소프트웨어를 소스 코드를 변경하지 않고 Cosmopolitan Libc로 빌드할 수 있습니다.
- 빌드된 실행 파일은 Linux, FreeBSD, MacOS, OpenBSD, NetBSD 및 일부 경우에는 Windows에서 실행할 수 있습니다.
- 이 기사에서는 자신의 소프트웨어를 Cosmopolitan Libc로 이식하는 방법에 대한 단계별 지침을 제공합니다.
- 이 패치는 시스템 값에 의존하는 switch 문과 구조체 초기화의 문제를 해결합니다.
- 저자는 처음에는 C 전처리기와 ifdef 때문에 sed 및 Python 스크립트를 사용하여 변환을 자동화하려고 시도했지만 완전히 작동하지 않았습니다.
- 그런 다음 저자는 GCC 플러그인을 사용하고 문제를 해결하기 위해 GCC 자체를 패치하는 방법을 탐구했습니다.
- 패치된 GCC를 사용하여 Cosmopolitan Libc로 소프트웨어를 빌드할 수 있으므로 이식 프로세스가 더 쉽고 원활해집니다.
- 저자는 성공적으로 lua를 빌드하고 python3.11에서 ZIP 저장소에 액세스하기 위한 변경을 수행했습니다.
- 문자열 배열을 룩업 테이블로 사용하는 busybox를 빌드하는 동안 저자는 어려움을 겪었습니다.
- 이진 표현식 때문에 ncurses에서 구조체 초기화에 대한 도전도 있었습니다.
- 저자는 대부분의 경우 Cosmopolitan Libc로 소프트웨어를 이식하는 데 필요한 변경이 최소하다고 결론을 내렸습니다.
- 저자는 패치가 완벽하지 않을 수 있으며 일부 제한 사항이 있을 수 있다고 인정합니다.
- 저자는 독자들에게 C 소프트웨어를 Cosmopolitan Libc로 빌드해 보라고 권장합니다.
- 저자는 실행 파일을 Windows에서 실행할 수 있는 가능성에 대해 언급했지만 테스트하지 않았습니다.
- 저자는 추가 정보와 참고 자료를 제공합니다.
이제 neo는 메세지를 코드블럭으로 감싸는 포맷으로 가나요? 횡스크롤을 해야됨과 붉은 색 계열의 텍스트 컬러가 조금 아쉽군요...
Hacker News 의견
- 작가가 GCC를 패치하여 실제로 이식 가능한 실행 파일을 빌드하는 방법에 대해 게시물을 작성했습니다.
- 이 패치를 통해 vim, emacs, ninja, bash, git 및 gcc와 같은 소프트웨어를 Cosmopolitan Libc로 빌드할 수 있습니다.
- 빌드된 실행 파일은 Linux, FreeBSD, MacOS, OpenBSD, NetBSD 및 Windows에서 실행될 수 있어야 합니다.
- 작가는 이 기술을 사용하여 빌드할 수 있는 소프트웨어 목록을 제공합니다.
- Go 저장소에는 이 주제에 대한 티켓이 있습니다.
- 한 댓글러는 새로운 OS 대상을 빌드하는 다른 접근 방식을 제안합니다.
- 다른 댓글러는 이 기술을 사용하여 성공적으로 컴파일된 소프트웨어 목록을 게시하는 것을 제안합니다.
- 누군가는 실제로 이식 가능한 실행 파일의 실용적인 목적에 대해 의문을 제기합니다.
- 다른 댓글러는 코드에서 상수를 처리하는 다른 접근 방식을 제안합니다.
- 시그널 번호와 errno의 사용에 대한 토론이 있습니다.
- 누군가는 C++ 표준 라이브러리와 그 std::error_code의 사용을 의문합니다.
- 한 댓글러는 이 주제를 놀라운 것으로 생각합니다.
- 컴파일 시간 상수 EINVAL에 대한 토론이 있습니다.