make在不同的linux中表现不同吗?

make在不同的linux中表现不同吗?,linux,ubuntu,makefile,ubuntu-14.04,ubuntu-16.04,Linux,Ubuntu,Makefile,Ubuntu 14.04,Ubuntu 16.04,我有一个make文件,它在这个版本的Linux上运行得很好。然而 为什么它不在另一个版本上运行 Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 codename : trusty 就在这里。。。它不在这个上面运行吗?为什么? Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 1

我有一个make文件,它在这个版本的Linux上运行得很好。然而 为什么它不在另一个版本上运行

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
codename :      trusty
就在这里。。。它不在这个上面运行吗?为什么?

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial
我在xenial上发现了这个错误…为什么

Ubuntu mate $:make
gcc: error: missing filename after ‘-o’
gcc: fatal error: no input files
compilation terminated.
这是我的make文件(更新了,上一篇文章没有这个)

CFLAGS=gcc-g
OBJ=dummyDriverX1.o x1.o错误.o
#使用后缀规则自动替换
%.o:%.c
${CFLAGS}-c$<
%.o:%.cpp
${CFLAGS}-c$<
#基于所需的.o文件构建x1
佩尔:${OBJ}
${CFLAGS}-o pell${OBJ}
清洁:
rm${OBJ}

您的Makefile将make良好的内置默认规则替换为劣质的本地货教猜测。Make确切地知道如何使用编译器的正确标志和选项编译C文件;不要试图胜过它,特别是如果你不熟悉编译器的话。(因此,make本身不是一个正确的问题;但是让make使用它的默认值将修复不正确的编译器调用。)

显示makefile。Linux版本不相关,重要的是
make
的版本。makefile可能依赖于有问题的其他脚本。不确定这是否有任何值,但当我调用make-v时(以便查看版本,如手册页所示)我得到一个gcc:致命错误:没有输入文件兼容终止。您的
Makefile
确实错误。请参阅示例;删除您的
Makefile
,运行
make-p
以了解内置规则,并正确编写新的
Makefile
CFLAGS = gcc -g
OBJ = dummyDriverX1.o x1.o error.o

# Automatic substitution using suffix rules to
%.o: %.c
    ${CFLAGS} -c $< 

%.o: %.cpp
    ${CFLAGS} -c $<

# Building x1 based on the required .o files
pell: ${OBJ}
    ${CFLAGS} -o pell ${OBJ}

clean:
    rm ${OBJ}