Tôi đã tự hỏi về điều này đặc biệt cho việc xây dựng phần mềm trong Debian (hệ thống Debian đã cài đặt có thể là phiên bản 32 bit với kernel 32 bit, thư viện, v.v. hoặc có thể là phiên bản 64 bit với nội dung được biên dịch cho 64- bit chứ không phải chế độ tương thích 32 bit).
Bản thân các gói Debian cần biết kiến trúc của chúng là gì (tất nhiên) khi chúng thực sự tạo ra gói với tất cả siêu dữ liệu của nó, bao gồm kiến trúc nền tảng, do đó, có một công cụ đóng gói xuất ra nó cho các công cụ đóng gói và tập lệnh khác được sử dụng, được gọi là kiến trúc dpkg . Nó bao gồm cả những gì nó được cấu hình để xây dựng, cũng như máy chủ hiện tại. (Thông thường đây là giống nhau.) Ví dụ đầu ra trên máy 64 bit:
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_OS=linux
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
Bạn chỉ có thể in một trong các biến đó hoặc thực hiện kiểm tra đối với các giá trị của chúng bằng các tùy chọn dòng lệnh để dpkg -arch architecture.
Tôi không biết làm thế nào kiến trúc dpkg suy ra kiến trúc, nhưng bạn có thể xem tài liệu hoặc mã nguồn của nó (kiến trúc dpkg và phần lớn hệ thống dpkg nói chung là Perl).