vscode 中无法编译 mit-6.824 lab1 中的 wc.go 文件
最近在学习 MIT 上发布的分布式系统设计课程。
按照 lab1 的步骤执行:
git clone git://g.csail.mit.edu/6.824-golabs-2020 6.824
cd ~/6.824
cd src/main
go build -buildmode=plugin ../mrapps/wc.go
在vscode中执行后会提示:
build command-line-arguments: cannot find module for path _/.../go/6.824-golabs-2020/src/mr
接着尝试用sudo
去执行,居然可以进行编译!( ̄△ ̄;)
后面发现vscode中的Go Extension查看文件的时候会报错提示:
go: cannot find main module, but found .git/config in /.../go/6.824-golabs-2020
to create a module there, run:
cd ../.. && go mod init
这个应该是没有初始化包管理的原因,所以进行了包管理初始化:
go mod init 6.824-golabs-2020
这样就解决了报错提示。
但是初始化包管理之后,即使是采用sudo
去执行go build -buildmode=plugin ../mrapps/wc.go
依然出现:
build command-line-arguments: cannot find module for path _/.../go/6.824-golabs-2020/src/mr
所以请教下社区大佬们:
- 为什么执行
sudo
之后就可以build
了,可不可以不用sudo
? - 在
mod init
之后,怎么样才能够进行build
? - 还有没有更好的配置建议?
THX~
go项目启用了包管理之后,相对路径的引入就会失效(目前还未找到解决方法),引入的方式需要改成以 go mod 配置的 module 为根的路径。附上
go.mod
:后面将
6.824-golabs-2020/src/mrapps/wc.go
中的引入../mr
改成6.824-golabs-2020/src/mr
即可。不过这个项目很多文件都采用了相对路径引入,也不是很好改啊,而且也不推荐采用相对路径。
就先这样将就着用吧。