>백엔드 개발 >Golang >Go Binary TEXT 지시어에서 파일 경로를 제거하려면 어떻게 해야 합니까?

Go Binary TEXT 지시어에서 파일 경로를 제거하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-11 18:13:11713검색

How Can I Remove File Paths from Go Binary TEXT Directives?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.