我正在尝试在 Ubuntu 16 上运行模拟代码。编辑是 16 而不是 14
当我运行 make all 时收到以下错误:
DIR bin exists
(cd src/gravity; make compile)
make[1]: Entering directory '/home/ubuntu/athena4.2/src/gravity'
../../Makeoptions:99: *** missing separator. Stop.
make[1]: Leaving directory '/home/ubuntu/athena4.2/src/gravity'
Makefile:45: recipe for target 'compile' failed
make: *** [compile] Error 2
因此,我研究了许多 stack exchange。我发现,这种错误通常是由于使用制表符和空格之间存在某种问题而导致的。
事实上,当我查看 Makeoptions 的第 99 行时,我发现了空格:
...
41 #------------------- compiler/library definitions ----------------------------
42 # select using MACHINE=<name> in command line. For example
43 # ophir> make all MACHINE=ophir
44 # New machines can be added to ifeq blocks below.
45
...
83 ifeq ($(MACHINE),zenith)
84 CC = mpicc
85 LDR = mpicc
86 OPT = -O3
87 MPIINC = -I/opt/mpich2/intel/include
88 MPILIB = -L/opt/mpich2/intel/lib -lmpich
89 FFTWLIB = -L/usr/local/fftw3 -lfftw3
90 FFTWINC = -I/usr/local/fftw3
91 else
92 ifeq ($(MACHINE),macosx)
93 CC = gcc
94 LDR = gcc
95 OPT = -O3
96 FFTWLIB = -L/opt/local/lib -lfftw3
97 FFTWINC = -I/opt/local/include
98 else
99 abort Unsupported MACHINE=$(MACHINE)
100 endif
...
现在,我尝试使用标签来代替,但得到了不同的错误:
DIR bin exists
(cd src/gravity; make compile)
make[1]: Entering directory '/home/ubuntu/athena4.2/src/gravity'
../../Makeoptions:99: *** recipe commences before first target. Stop.
make[1]: Leaving directory '/home/ubuntu/athena4.2/src/gravity'
Makefile:45: recipe for target 'compile' failed
make: *** [compile] Error 2
然而,......我认为这可能不是真实的问题。
如果您从 Makeoptions 文件的专家那里注意到,有多个机器选项(我只显示了两个)。我想知道的是,也许我的机器不受支持?因为 Makeoptions 位于第 99 行?
因此,也许我应该为我的 ubuntu 机器添加一个 ifeq?
我可以在 Mac 上运行它。
谢谢你的帮助 :)
****************************** 更新 *******************************
感谢 heynnema 看起来很明显,现在我需要向 ifeq 块添加一台新机器。
我如何确定我应该使用的??名称??以便:
ifeq ($(MACHINE), ??名称??)
返回 true?
我已经尝试过 ??name?? = ubuntu
这会返回相同的错误,它给了我不受支持的机器。
元问题这是否会成为一个新问题?元问题
答案1
在终端:
grep -i 'ifeq ($(MACHINE)' Makeoptions
这将为您提供受支持的机器列表。如果您在此列表中看到您的机器类型,则在终端中:
make all MACHINE=the_name_of_a_supported_machine
如果您在列表中找不到您的机器类型,则表示您使用的机器不受支持。