C++ cc1plus错误:指定了两次输出文件名

C++ cc1plus错误:指定了两次输出文件名,c++,makefile,C++,Makefile,试图编译一个用于我的硕士项目的系统,但遇到了困难。 我相信这应该是正确编译的,所以我假设错误属于我做错的事情,而不是代码库本身 如有任何见解,将不胜感激 我输入的命令: $ mkdir obj $ cd obj $ ../configure CC=gcc-4.6 CXX=g++-4.6 $ OPT="-O0 -DMODE=0" make make的输出如下: make -C util make[1]: Entering directory `/home/jordan/workspace/swa

试图编译一个用于我的硕士项目的系统,但遇到了困难。 我相信这应该是正确编译的,所以我假设错误属于我做错的事情,而不是代码库本身

如有任何见解,将不胜感激

我输入的命令:

$ mkdir obj
$ cd obj
$ ../configure CC=gcc-4.6 CXX=g++-4.6
$ OPT="-O0 -DMODE=0" make
make的输出如下:

make -C util
make[1]: Entering directory `/home/jordan/workspace/swan/obj/util'
make CFLAGS="-O4 -DUSE_RDTSC=0" pp_time.o
make[2]: Entering directory `/home/jordan/workspace/swan/obj/util'
cc -O4 -DUSE_RDTSC=0   -c -o pp_time.o ../../util/pp_time.c
make[2]: Leaving directory `/home/jordan/workspace/swan/obj/util'
mv pp_time.o pp_time_us.o
ar crv libtime_us.a pp_time_us.o
a - pp_time_us.o
ranlib libtime_us.a
make CFLAGS="-O4 -DUSE_RDTSC=1" pp_time.o
make[2]: Entering directory `/home/jordan/workspace/swan/obj/util'
cc -O4 -DUSE_RDTSC=1   -c -o pp_time.o ../../util/pp_time.c
make[2]: Leaving directory `/home/jordan/workspace/swan/obj/util'
mv pp_time.o pp_time_cy.o
ar crv libtime_cy.a pp_time_cy.o
a - pp_time_cy.o
ranlib libtime_cy.a
make CFLAGS="-O4 -DUSE_RDTSC=0 -DUSE_MARSS" pp_time.o
make[2]: Entering directory `/home/jordan/workspace/swan/obj/util'
cc -O4 -DUSE_RDTSC=0 -DUSE_MARSS   -c -o pp_time.o ../../util/pp_time.c
make[2]: Leaving directory `/home/jordan/workspace/swan/obj/util'
mv pp_time.o pp_time_marss.o
ar crv libtime_marss.a pp_time_marss.o
a - pp_time_marss.o
ranlib libtime_marss.a
make[1]: Leaving directory `/home/jordan/workspace/swan/obj/util'
make -C scheduler
make[1]: Entering directory `/home/jordan/workspace/swan/obj/scheduler'
if [ ! -f mangled.h ] ; then ../../scheduler/xfn.sh /dev/null > mangled.h ; fi
g++-4.6 -g -O2 -Wall -o0 -DMODE=0 -I -I/scheduler -I/swan -I.. -I../scheduler -std=c++0x -momit-leaf-frame-pointer -fno-omit-frame-pointer -pthread -S ../../scheduler/wf_stack_frame.cc -o wf_stack_frame.s
cc1plus: error: output filename specified twice
make[1]: *** [wf_stack_frame.s] Error 1
make[1]: Leaving directory `/home/jordan/workspace/swan/obj/scheduler'
make: *** [scheduler-dir] Error 2

问题是您的命令中有
-o0
,它将输出文件名指定为
0
,这与
-o wf\u stack\u frame.s
冲突。这必须是
-O0[大写字母O]
。命令中已经有
-O2
,您可以删除该命令并使用
-O0
,反之亦然。记住,如果您同时提到这两个选项,那么最后一个选项将是有效的。

-S不应该出现在g++选项中。那么我应该从Makefile中删除-S及其参数吗?简单的肮脏方法是在/home/jordan/workspace/swan/obj/scheduler中编辑
Makefile
,然后从那里删除-S。但好的解决方案是修复您的自动生成脚本。删除-S只会导致与错误相同的输出:g++-4.6:错误:o0:没有这样的文件或目录您有
-o0
,它应该是
-o0
,即“连字符大写字母O后跟0”。也许您应该删除
-o0
,因为选项中已经有
-O2
g++-4.6 -g -O2 -Wall -o0 -DMODE=0 -I -I/scheduler -I/swan -I.. -I../scheduler -std=c++0x -momit-leaf-frame-pointer -fno-omit-frame-pointer -pthread -S ../../scheduler/wf_stack_frame.cc -o wf_stack_frame.s
cc1plus: error: output filename specified twice