首页 > 解决方案 > `make` 二进制文件的两个不同符号链接:为什么调用的结果不同?

问题描述

设置:macOS、bash、tmux 内部。我使用make通过自制软件安装。使用我的 Makefile运行make时,我得到

protoc -I=foo/bar/proto --cpp_out=foo/bar/proto foo/bar/proto/foo.proto
make: *** No rule to make target 'foo/bar/proto/foo.pb.h', needed by 'proto'.  Stop.
make: *** Waiting for unfinished jobs....

当我改为运行gmake时,程序成功:

protoc -I=foo/bar/proto --cpp_out=foo/bar/proto foo/bar/proto/foo.proto
protoc -I=foo/bar/proto --python_out=foo/bar/proto foo/bar/proto/foo.proto

但二进制文件完全相同:

$> readlink -f `which make`
/usr/local/Cellar/make/4.2.1_1/bin/gmake
$> readlink -f `which gmake`
/usr/local/Cellar/make/4.2.1_1/bin/gmake

这怎么可能?


有人建议这个问题是重复的,但似乎并非如此。我知道,系统make不一定是 GNUmake或不是当前版本。但正如上面所证明的,这两个命令指的是完全相同的二进制文件

标签: bashmakefilegnu-maketmux

解决方案


推荐阅读