Go 바이너리의 TEXT 지시어에서 파일 경로 제거
문제:
Go 빌드 시 실행 파일, 경로 정보 "/Users/myuser/dev/go/src/fooapi/spikes/mongoapi.go"는 어셈블리 내의 TEXT 지시문에 포함되는 경우가 많습니다. 이 경로 정보는 특정 시나리오에서 바람직하지 않을 수 있습니다.
해결책:
파일 경로 정보를 제거하려면 -gcflags 및 -asmflags와 함께 -trimpath 플래그를 사용하십시오. 빌드 프로세스:
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
방법 작동:
-trimpath를 -gcflags 및 -asmflags에 전달하면 elf 바이너리에서 모든 경로 정보가 제거됩니다. 이렇게 하면 어셈블리의 TEXT 지시문에 관련 파일 경로 없이 관련 함수 이름과 오프셋만 포함됩니다.
확인:
다음을 사용하여 결과를 확인할 수 있습니다. go 도구 objdump 명령:
$ 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 . .
보시다시피 파일 경로는 "/Users/myuser/dev/go/src/api/spikes/mongoapi.go"가 TEXT 지시문에서 제거되었습니다.
추가 정보:
사용 파일 경로 정보를 제거하는 스트립 도구는 잠재적으로 실행 파일이 손상될 수 있으므로 권장되지 않습니다. -trimpath 플래그는 원하는 결과를 얻기 위한 보다 제어되고 안정적인 방법을 제공합니다.
위 내용은 Go Binary TEXT 지시어에서 파일 경로를 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!