2013-04-23 3 views
0

У меня есть проблема, включая параллельное вычисление с помощью OpenMP в моем make-файле. Ошибка у меня естьMakefile с OpenMP: не может указать -o с -c, -S или -E с несколькими файлами

не может указать -o с -c, -S или -E с несколькими файлами

Вот мой Makefile:

GSLFLAGS := pkg-config --cflags gsl 
LIBGSL := pkg-config --libs gsl 

CFLAGS = -c -C -O3 -openmp=parallel 

lateral.o:lateral.cxx 

    g++ -c lateral.cxx 

main.o:main.cxx 

    g++ -c main.cxx $< ${GSLFLAGS} ${CFLAGS} 

alg:main.o lateral.o 

    g++ -o [email protected] $^ ${LIBGSL} 

ответ

1

ИМО (но не может проверить прямо сейчас) есть что-то не так с этой линии:

CFLAGS = -c -C -O3 -openmp=parallel 

Я думаю -openmp=parallel должен быть просто -fopenmp. Во-первых, потому что это правильный флаг компиляции для OpenMP, второй, потому что то, что после -o будет интерпретироваться как имя выходного файла. И, как говорится в сообщении об ошибке, вы не можете использовать -c и -o вместе.

2

линия

g++ -c main.cxx $< ${GSLFLAGS} ${CFLAGS} 

Должно читать

g++ -c main.cxx ${GSLFLAGS} ${CFLAGS} 

, потому что, $< расширяет свое первое обязательное условие, main.cxx, что дает g++ -c main.cxx main.cxx. Чтобы избежать этого, вы можете даже написать общие правила, как:

%.o: %.cxx 
    g++ -c -o [email protected] ${GSLFLAGS} ${CFLAGS} $^ 

И вам не нужны особые правила для main.o и lateral.o, полный Makefile будет:

GSLFLAGS := pkg-config --cflags gsl 
LIBGSL := pkg-config --libs gsl 

all: alg 

%.o: %.cxx 
    g++ -c -o [email protected] ${GSLFLAGS} ${CFLAGS} $^ 

alg: main.o lateral.o 
    g++ -o [email protected] $^ ${LIBGSL} 

Вы можете найти подробное объяснение синтаксиса выше here или более подробная документация here.

Edit:

К сожалению, я пропустил флаги C, есть также ошибка есть:

CFLAGS = -c -C -O3 -openmp=parallel 

Вы должны удалить -c, так как вы уже используете его в правиле, которое что жалоба gcc.

+0

Привет, спасибо, но удаляем $ <Я получаю эту ошибку ** GCC не поддерживает -C или -CC без -E ** – user2287387

+0

СПАСИБО МНОГО! ЕСТЬ НЕКОТОРЫЕ ОШИБКИ .. – user2287387

Смежные вопросы