Như đã được đề cập trong bình luận, theo mặc định, bộ ba mục tiêu được tạo bởi tập lệnh config.guess . Logic của nó khá đơn giản. Đầu tiên nó sử dụnguname
để có được một số thông tin hệ thống cơ bản:
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
Các chuỗi này được kết hợp và phù hợp với các mẫu mã hóa cứng. Kết quả cũng được mã hóa cứng:
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
...(snip)...
x86_64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
...(snip)...
Đối với một số hệ thống, có thể đưa ra kết quả có ý nghĩa hơn, như IBM trong "rs6000-ibm-aix".
Các nhà bảo trì phân phối chỉ đơn giản ghi đè chuỗi này bằng mã riêng của họ (cũng được mã hóa cứng):
$ gcc -v
...(snip)...
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.2-10'
...(snip)...
--target=x86_64-linux-gnu
GCC 6 có thể sẽ xuất x86_64-pc-linux-gnu theo mặc định: config.guess được cập nhật trong kho lưu trữ ngược dòng.