컴파일된 Go 바이너리의 TEXT 지시어에서 파일 경로 제거
컴파일된 Go 바이너리 내의 TEXT 지시어에서 파일 경로 정보를 제거해야 할 필요성이 발생합니다. 이 질문은 'strip' 도구를 사용하지 않는 솔루션을 모색합니다.
해결책: -trimpath 플래그 사용
권장되는 접근 방식은 'strip' 도구를 활용하는 것입니다. -trimpath' 플래그는 'go build'를 호출할 때 발생합니다. '-trimpath'를 '-gcflags' 및 '-asmflags'에 전달하면 결과 elf 바이너리에서 외부 경로 정보를 제거할 수 있습니다.
다음은 '-'를 통합한 'go build' 명령의 수정된 예입니다. 트림패스' 플래그:
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
확인:
이 솔루션의 효율성을 확인하려면 수정된 바이너리에서 'go tool 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 . .
추가 참고:
'스트립' 도구가 이 문제를 해결한다고 보고되었지만 Go 커뮤니티의 일부에서는 여전히 안정성에 대해 우려를 표명한다는 점에 유의해야 합니다. 다양한 포럼과 토론에 기록된 바와 같이 알 수 없고 예측할 수 없는 버그가 발견되었습니다.
위 내용은 `strip` 도구를 사용하지 않고 Go Binaries\' TEXT 지시문에서 파일 경로를 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!