如何让`make`识别别名命令

11 bash command-line compile make

我正在安装MOOG,当make -f Makefile.maclap我收到错误时:

$ make -f Makefile.maclap
g77 -w   -c -o Abfind.o Abfind.f
make: g77: No such file or directory
make: *** [Abfind.o] Error 1
Run Code Online (Sandbox Code Playgroud)

经过网上研究,我认为,由于我有 gcc-5,因此我的计算机上不存在命令 g77。

因此,我根据堆栈交换问题alias g77=/usr/local/bin/gfortran-5尝试使用 gfortran 编译 fortran 代码。

现在,当我g77看到gfortran-5: fatal error: no input files compilation terminated,表明它g77正在作为编译的工作。

但是当我make -f Makefile.maclap仍然收到错误时:

$ make -f Makefile.maclap
g77 -w   -c -o Abfind.o Abfind.f
make: g77: No such file or directory
make: *** [Abfind.o] Error 1
Run Code Online (Sandbox Code Playgroud)

如何获得 make 命令以使用 fortran-5 来编译文件 Abfind.o 和 Abfind.f?

我怎样才能顺利完成makemake install步骤获得该软件包运行?

Tho*_*key 5

make程序只会看到实际是文件(或目录)的名称。它对 shell 别名一无所知。

而不是alias,如果您将g77您的$PATH作为符号链接,那将起作用。在许多环境中,如果您有一个$HOME/bin目录,它会自动添加到您的$PATH. (如果没有,手动执行此操作很简单,详细信息取决于您的外壳)。

如果是更简单的情况:

cd
mkdir bin
cd bin
ln -s /usr/local/bin/gfortran-5 g77
Run Code Online (Sandbox Code Playgroud)

然后注销,重新登录(让shell的初始化脚本更新路径等)


小智 5

如果你不想像@Thomas 建议的那样创建符号链接,你基本上可以在 Makefile 中创建一个别名,方法是将此行放置在 Makefile 顶部附近的某处:

G77 := /usr/local/bin/gfortran-5
Run Code Online (Sandbox Code Playgroud)

然后,在你的目标中的某个地方,像这样使用它:

$(G77) -w -c -o Abfind.o Abfind.f
Run Code Online (Sandbox Code Playgroud)