从golang/go Github仓库构建go/src包

xuo3flqw  于 2023-02-01  发布在  Go
关注(0)|答案(1)|浏览(138)

询问在github repo fork上从go/std库构建单独的go包时有什么合适的解决方法。例如在构建src/go/parser包时遇到的问题总结如下。

parser.go 21:2 use of internal package go/internal/typeparams is not allowed

当然项目导入路径都引用GOROOT库路径

usr/local/go

而且我通常在我自己的目录中处理项目,我的go路径设置在那里。

/Users/andewx/github/go/src/github.com/andewx/my_go_extension_project

问题的关键是clone/fork项目使用标准的库导入路径,我希望能够从我自己的GOPATH中处理我的repo,但在这种情况下内部包不能导入,因为导入指令总是指向我的GOROOT。
我能想到的只有两个选择:
1.通过在我的/usr/local/go中启动repo并从那里处理包来扩展我的个人go项目。
1.将GOROOT更改为指向当前项目,并在项目中包含当前的go binary go fmt和工具链
1.理想情况下,我可以只留下目录结构的一切,我可以重定向标准的导入路径去标准库到我的当前项目为这个项目只...
任何来自社区的解决方案#3的想法是我正在寻找的。
1.通过在我的/usr/local/go中启动repo并从那里处理包来扩展我的个人go项目。
1.将GOROOT更改为指向当前项目,并在项目中包含当前的go binary go fmt和工具链

hzbexzde

hzbexzde1#

如果你试图在go编译器上工作并扩展它,我实际上发现,改变你的GOROOT指向你的工作空间,然后复制你需要的二进制文件和工具作为一个合适的修复,它不会产生任何额外的问题。

  • 导出环境变量export GOROOT="/my/go/project"
  • go env GOTOOLDIR找出go工具的位置,将这个目录结构复制到你的项目文件夹中。
  • 复制go bin cp /usr/local/bin/* ${GOROOT}"/bin"复制到你的go二进制文件中
  • 复制工具cp /usr/local/go/pkg/tool/linux_amd64/* ${GOROOT}/pkg/tool/linux_amd64

现在,您的项目应该能够运行复制的二进制文件,并将项目目录临时设置为GOROOT。

相关问题