Mengalih keluar Laluan Fail daripada Arahan TEKS dalam Go Binari
Masalah:
Apabila membina Go boleh laku, maklumat laluan seperti "/Users/myuser/dev/go/src/fooapi/spikes/mongoapi.go" selalunya disertakan dalam arahan TEKS dalam perhimpunan. Maklumat laluan ini boleh menjadi tidak diingini dalam senario tertentu.
Penyelesaian:
Untuk mengalih keluar maklumat laluan fail, gunakan bendera -trimpath bersama-sama dengan -gcflags dan -asmflags semasa proses binaan:
CGO_ENABLED=0 go build -v -a -ldflags="-w -s" \ -gcflags=-trimpath=/Users/myuser/dev/go/src \ -asmflags=-trimpath=/Users/myuser/dev/go/src \ -o ./fooapi spikes/mongoapi.go
Bagaimana ia Berfungsi:
Melalui -trimpath ke -gcflags dan -asmflags mengalih keluar sebarang maklumat laluan daripada binari elf. Ini memastikan arahan TEXT dalam himpunan hanya mengandungi nama fungsi dan offset yang berkaitan, tanpa laluan fail yang berkaitan.
Pengesahan:
Anda boleh mengesahkan keputusan menggunakan arahan objdump alat go:
$ go tool objdump ./fooapi . . TEXT main.init(SB) api/spikes/mongoapi.go mongoapi.go:60 0x12768c0 65488b0c25a0080000 GS MOVQ GS:0x8a0, CX mongoapi.go:60 0x12768c9 483b6110 CMPQ 0x10(CX), SP mongoapi.go:60 0x12768cd 7663 JBE 0x1276932 . .
Seperti yang anda lihat, laluan fail "/Users/myuser/dev/go/src/api/spikes/mongoapi.go" telah dialih keluar daripada arahan TEKS.
Maklumat Tambahan:
Menggunakan alat jalur untuk mengalih keluar maklumat laluan fail tidak disyorkan kerana ia berpotensi membawa kepada boleh laku yang rosak. Bendera -trimpath menyediakan cara yang lebih terkawal dan boleh dipercayai untuk mencapai hasil yang diinginkan.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengalih keluar Laluan Fail daripada Arahan TEKS Binari Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!