>백엔드 개발 >Golang >ARM64 바이너리를 빌드할 때 gotvm을 무시하는 방법

ARM64 바이너리를 빌드할 때 gotvm을 무시하는 방법

PHPz
PHPz앞으로
2024-02-05 21:27:07541검색

如何在构建 ARM64 二进制文件时忽略gotvm

질문 내용

goarch=arm64 时忽略 myrepo/gotvm/* 및 기타 모든 경우에 완전한 저장소를 구축하기 위해 go 저장소를 구축하고 싶습니다.

프로젝트 폴더 구조는 다음과 같습니다.

으아아아

amd64에서 구축하면 모든 것이 잘 작동합니다:

goos=linux goarch=amd64 go build -o amdbuild main.go

arm64를 기반으로 구축

goos=linux goarch=arm64 go build -o armbuild main.go

바이너리가 생성되지 않기 전에 다음 오류가 발생합니다.

으아아아

package gotvm (array.go, device.go, gotvm.go)을 사용하여 각 파일의 상단에 다음 줄을 추가할 때도 마찬가지입니다.

으아아아

내가 시도한 다른 단계:

  • go clean -modcache
  • 다음 빌드 플래그 package gotvm
  • 에 속한 모든 파일 위에 추가합니다(개별적으로).
으아아아

여기에도 비슷한 질문이 있습니다: (시뮬레이션 패키지) , 그러나 이는 전체 폴더를 무시합니다. 조건이 arch 不是 arm64인 폴더를 무시하고 싶습니다.

tl;dr; 내 저장소를 arm64와 amd64로 크로스 컴파일할 수 있는 방법이 있나요? arm64 빌드에서 tvm을 무시하고 싶습니다.

사양:

  • 이동 버전: go1.20.4 linux/amd64
  • 시스템: 우분투 20.04.5 lts

정답


package 절만 포함하는 go 파일을 gotvm 文件夹中可以解决此问题。例如,doc.go 파일에 추가하세요.

으아아아

하지만 이 문제가 발생하면 대부분 이 패키지를 가져오는 파일이 하나 이상 있다는 뜻이며 goarch=arm64不排除这个文件。也许您应该从此文件中删除导入(或者对于 goarch=arm64 이 파일도 제외합니다.

문제를 설명하기 위해 데모를 추가하겠습니다. 파일은 다음과 같습니다:

으아아아

go.mod:

으아아아

gotvm/gotvm.go:

으아아아

main.go:

으아아아

이 데모에서는 main.go 中删除 _ "example.com/m/gotvm" 或添加前面提到的 doc.go 文件即可解决该问题。我认为,最好从 main.go 中删除 _ "example.com/m/gotvm"로 시작하세요.

위 내용은 ARM64 바이너리를 빌드할 때 gotvm을 무시하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제