Rumah >pembangunan bahagian belakang >Golang >Menggunakan uname untuk mendapatkan seni bina pemproses dalam mac memberikan hasil yang salah apabila membina binari go untuk amd64
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.
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?
Petikan@hrdy
Komen 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!