Rumah >pembangunan bahagian belakang >Golang >Menggunakan uname untuk mendapatkan seni bina pemproses dalam mac memberikan hasil yang salah apabila membina binari go untuk amd64

Menggunakan uname untuk mendapatkan seni bina pemproses dalam mac memberikan hasil yang salah apabila membina binari go untuk amd64

王林
王林ke hadapan
2024-02-09 13:09:07638semak imbas

当为 amd64 构建 go 二进制文件时,使用 uname 在 mac 中获取处理器架构会给出错误的结果

editor php Xigua menemui masalah semasa memproses fail binari amd64 build go. Pada sistem Mac, menggunakan uname untuk mendapatkan seni bina pemproses boleh membawa kepada keputusan yang salah. Isu ini mungkin memberi kesan kepada proses penyusunan dan pembinaan, jadi ia perlu diambil perhatian. Cara yang betul untuk mendapatkan seni bina pemproses adalah melalui masa jalan fungsi terbina dalam go.GOARCH. Ini boleh mengelakkan ralat yang disebabkan oleh uname dan memastikan ketepatan penyusunan dan pembinaan.

Kandungan soalan

Saya mempunyai perkhidmatan golang dan perlu mendapatkan jenis seni bina pemproses

archCmd := exec.Command("uname", "-m")
arch, _ := archCmd.CombinedOutput()

Saya menjalankan binari yang sama pada mesin Intel dan Arm. Binari dibina dengan

GOOS=darwin GOARCH=amd64

Pada mesin ARM, ini mendapat x86_64. Ini nampaknya berlaku sejak saya membina dengan GOARCH=amd64 . Tetapi saya tidak pasti mengapa ini berlaku. Jika saya ingin menjalankan binari binari yang sama pada mesin intel dan lengan, apakah alternatif saya?

Penyelesaian

Petikan@hrdyKomen menerangkan isu ini:

Memetik jawapan superuser yang berasingan: https://www.php.cn/link/211fff9e65c0e47a790c629116e32996

...Ini memerlukan beberapa logik bersyarat untuk mengesan sistem pengendalian dan menghurai untuk mengesan jenis CPU Apple. Ini mungkin rosak pada masa hadapan jika nilai rentetan ini berubah.

archCmd := exec.Command("sysctl", "machdep.cpu.brand_string")
arch, _ := archCmd.CombinedOutput()

Sekali lagi, kredit kepada @selalerercapitolis untuk pautan jawapan.

Atas ialah kandungan terperinci Menggunakan uname untuk mendapatkan seni bina pemproses dalam mac memberikan hasil yang salah apabila membina binari go untuk amd64. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam