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

时间:2014-02-26 00:20:57

标签: 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/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

1 个答案:

答案 0 :(得分:1)

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

问题是您的命令中有-o0,它指定的输出文件名为0,与-o wf_stack_frame.s冲突。这必须是-O0 [capital letter O]。您可以在命令中删除-O2并使用-O0,反之亦然。请记住,如果你同时提到两者,那么最后一个选项将是有效的。