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


3

我正在安装 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

经过网上研究,我认为,由于我有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

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

我怎样才能顺利完成 makemake install 让这个软件包运行的步骤?

Answers:


0

如果您不想制作像@Thomas建议的符号链接,您基本上可以在Makefile中创建一个别名,就像将此行放在Makefile顶部附近:

G77 := /usr/local/bin/gfortran-5

然后,在你的目标某处,使用它像:

$(G77) -w -c -o Abfind.o Abfind.f

这个答案还有很多不足之处。如果我创建别名来解决一个主机上的问题,那么其他主机没有问题(并且在硬编码位置缺少编译器)呢?
jww

你可以看看 Makefile条件 并根据主机系统上/不存在的内容更改G77变量。
mdszy

3

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

而不是一个 alias, 如果你有 g77 在你的 $PATH 作为一种象征性的联系,这将起作用。在许多环境中,如果你有一个 $HOME/bin 目录,即自动添加到您的 $PATH。 (如果没有,手动执行此操作很简单,详细信息取决于您的shell)。

如果是更简单的情况:

cd
mkdir bin
cd bin
ln -s /usr/local/bin/gfortran-5 g77

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.