编译失败:没有这样的文件或目录(但它确实存在!)
Compilation fails: No such file or directory (but it DOES exist!)
我正在尝试编译 Ethereum Go client. Following the instructions 我只是 运行 make geth
,但是失败了:
$ make geth
build/env.sh go run build/ci.go install ./cmd/geth
make: build/env.sh: No such file or directory
make: *** [geth] Error 1
据我从这个错误中了解到,它抱怨 build/env.sh
或 build/ci.go
不存在。所以我检查了构建文件夹,但它们似乎都在那里:
$ ls -l build
total 648
drwxr-xr-x 3 kramer65 staff 102 Feb 13 13:45 _vendor
-rw-r--r-- 1 kramer65 staff 2892 Feb 13 13:45 ci-notes.md
-rw-r--r-- 1 kramer65 staff 30516 Feb 13 13:45 ci.go <===
-rw-r--r-- 1 kramer65 staff 123 Feb 13 13:45 deb.changelog
... some other files here
-rw-r--r-- 1 kramer65 staff 379 Feb 13 13:45 deb.rules
-rwxr-xr-x 1 kramer65 staff 721 Feb 13 13:45 env.sh <===
-rw-r--r-- 1 kramer65 staff 1722 Feb 13 13:45 mvn.pom
... and some more files here
我检查了是否安装了 go 以及它是哪个版本:
$ which go
/usr/local/bin/go
$ go version
go version go1.7.5 darwin/amd64
所以go似乎没问题。
有人知道我如何 debug/solve 这个吗?欢迎所有提示!
好的,没关系。找到了。问题是 dos 风格的行结尾。
所以要递归地将行结尾转换为 unix I 运行:
find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix
然后再次尝试构建。那修好了。
我希望这对这里的其他人有所帮助。无论如何,祝大家有个美好的一天!
我按照以下说明解决了问题。不知道是什么原因,我彻底去掉了brew
,变成了运行。 (mac)
1 install go(I used package)
2 git clone https://github.com/ethereum/go-ethereum
3 cd go-ethereum && git checkout tags/v1.8.2
4 run `find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix`(if you don't have dos2unix, you could brew one, it does not break anything.)
5 make geth
6 ln -s /path/to/origin/geth /path/to/target/geth
然后 运行 which geth
你可以找到你的 geth。 运行 geth version
你可以看到你的版本。
我正在尝试编译 Ethereum Go client. Following the instructions 我只是 运行 make geth
,但是失败了:
$ make geth
build/env.sh go run build/ci.go install ./cmd/geth
make: build/env.sh: No such file or directory
make: *** [geth] Error 1
据我从这个错误中了解到,它抱怨 build/env.sh
或 build/ci.go
不存在。所以我检查了构建文件夹,但它们似乎都在那里:
$ ls -l build
total 648
drwxr-xr-x 3 kramer65 staff 102 Feb 13 13:45 _vendor
-rw-r--r-- 1 kramer65 staff 2892 Feb 13 13:45 ci-notes.md
-rw-r--r-- 1 kramer65 staff 30516 Feb 13 13:45 ci.go <===
-rw-r--r-- 1 kramer65 staff 123 Feb 13 13:45 deb.changelog
... some other files here
-rw-r--r-- 1 kramer65 staff 379 Feb 13 13:45 deb.rules
-rwxr-xr-x 1 kramer65 staff 721 Feb 13 13:45 env.sh <===
-rw-r--r-- 1 kramer65 staff 1722 Feb 13 13:45 mvn.pom
... and some more files here
我检查了是否安装了 go 以及它是哪个版本:
$ which go
/usr/local/bin/go
$ go version
go version go1.7.5 darwin/amd64
所以go似乎没问题。
有人知道我如何 debug/solve 这个吗?欢迎所有提示!
好的,没关系。找到了。问题是 dos 风格的行结尾。
所以要递归地将行结尾转换为 unix I 运行:
find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix
然后再次尝试构建。那修好了。
我希望这对这里的其他人有所帮助。无论如何,祝大家有个美好的一天!
我按照以下说明解决了问题。不知道是什么原因,我彻底去掉了brew
,变成了运行。 (mac)
1 install go(I used package)
2 git clone https://github.com/ethereum/go-ethereum
3 cd go-ethereum && git checkout tags/v1.8.2
4 run `find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix`(if you don't have dos2unix, you could brew one, it does not break anything.)
5 make geth
6 ln -s /path/to/origin/geth /path/to/target/geth
然后 运行 which geth
你可以找到你的 geth。 运行 geth version
你可以看到你的版本。