3 điểm bởi GN⁺ 2023-07-15 | 3 bình luận | Chia sẻ qua WhatsApp
  • Một kỹ sư phần mềm đã viết bản vá cho GCC để đơn giản hóa việc tạo ra các tệp thực thi thực sự có thể di chuyển bằng Cosmopolitan Libc.
  • Bản vá này cho phép build các phần mềm phổ biến như bash, curl, git và chính gcc với Cosmopolitan Libc mà không cần thay đổi mã nguồn.
  • Các tệp thực thi được build có thể chạy trên Linux, FreeBSD, MacOS, OpenBSD, NetBSD và trong một số trường hợp là Windows.
  • Bài viết này cung cấp hướng dẫn từng bước về cách port phần mềm của bạn sang Cosmopolitan Libc.
  • Bản vá giải quyết các vấn đề với câu lệnh switch và khởi tạo struct phụ thuộc vào các giá trị hệ thống.
  • Ban đầu, tác giả đã thử tự động hóa việc chuyển đổi bằng các script sed và Python do có C preprocessor và ifdef, nhưng cách đó không hoạt động hoàn toàn.
  • Sau đó, tác giả đã tìm hiểu việc dùng plugin GCC và cách vá chính GCC để giải quyết vấn đề.
  • Với GCC đã được vá, có thể build phần mềm bằng Cosmopolitan Libc, giúp quá trình port trở nên dễ dàng và trơn tru hơn.
  • Tác giả đã build thành công lua và thực hiện thay đổi trong python3.11 để truy cập kho lưu trữ ZIP.
  • Khi build busybox, tác giả gặp khó khăn vì nó dùng mảng chuỗi làm bảng tra cứu.
  • Cũng có thách thức với việc khởi tạo struct trong ncurses do các biểu thức nhị phân.
  • Tác giả kết luận rằng trong đa số trường hợp, các thay đổi cần thiết để port phần mềm sang Cosmopolitan Libc là rất ít.
  • Tác giả thừa nhận bản vá có thể chưa hoàn hảo và có thể tồn tại một số hạn chế.
  • Tác giả khuyến khích độc giả thử build phần mềm C với Cosmopolitan Libc.
  • Tác giả có nhắc đến khả năng chạy tệp thực thi trên Windows nhưng chưa kiểm thử.
  • Tác giả cung cấp thêm thông tin và tài liệu tham khảo.

3 bình luận

 
ryuheechul 2023-07-15

Bây giờ neo chuyển sang định dạng bọc tin nhắn trong khối mã rồi à? Việc phải cuộn ngang và màu chữ tông đỏ thì hơi đáng tiếc...

 
xguru 2023-07-16

Ôi, việc bị bọc trong khối mã là lỗi đó hu hu

 
GN⁺ 2023-07-15
Ý kiến trên Hacker News
  • Tác giả đã viết một bài đăng về cách vá GCC để xây dựng các tệp thực thi thực sự có thể di chuyển được.
  • Bản vá này cho phép xây dựng các phần mềm như vim, emacs, ninja, bash, git và gcc bằng Cosmopolitan Libc.
  • Các tệp thực thi được xây dựng sẽ có thể chạy trên Linux, FreeBSD, MacOS, OpenBSD, NetBSD và Windows.
  • Tác giả cung cấp danh sách phần mềm có thể được xây dựng bằng kỹ thuật này.
  • Có một ticket trong kho lưu trữ Go về chủ đề này.
  • Một người bình luận đề xuất một cách tiếp cận khác để xây dựng mục tiêu OS mới.
  • Một người bình luận khác đề xuất đăng danh sách phần mềm đã được biên dịch thành công bằng kỹ thuật này.
  • Có người đặt câu hỏi về mục đích thực tiễn của các tệp thực thi thực sự có thể di chuyển được.
  • Một người bình luận khác đề xuất một cách tiếp cận khác để xử lý hằng số trong mã.
  • Có thảo luận về việc sử dụng số hiệu signal và errno.
  • Có người đặt câu hỏi về thư viện chuẩn C++ và việc sử dụng std::error_code của nó.
  • Một người bình luận cho rằng chủ đề này thật đáng kinh ngạc.
  • Có thảo luận về hằng số tại thời điểm biên dịch EINVAL.