ตามที่ได้กล่าวไปแล้วในความคิดเห็นโดยค่าเริ่มต้นเป้าหมายแฝดถูกสร้างขึ้นโดยสคริปต์config.guess ตรรกะมันค่อนข้างง่าย ก่อนอื่นมันใช้uname
เพื่อรับข้อมูลพื้นฐานของระบบ:
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
สตริงเหล่านี้จะรวมกันและจับคู่กับรูปแบบฮาร์ดโค้ด ผลลัพธ์ก็คือฮาร์ดโค้ดด้วย:
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
...(snip)...
x86_64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
...(snip)...
สำหรับบางระบบเป็นไปได้ที่จะให้ผลลัพธ์ที่มีความหมายมากกว่าเช่น IBM ใน "rs6000-ibm-aix"
ผู้ดูแลการแจกจ่ายจะแทนที่สตริงนี้ด้วยตนเอง (เช่นฮาร์ดโค้ด):
$ 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 อาจส่งออก x86_64-pc-linux-gnu โดยค่าเริ่มต้น: config.guess ที่อัปเดตแล้วในที่เก็บอัปสตรีม