首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OpenMP的Makefile :不能用多个文件指定带有-c、-S或-E的-o

使用OpenMP的Makefile :不能用多个文件指定带有-c、-S或-E的-o
EN

Stack Overflow用户
提问于 2013-04-23 12:38:28
回答 1查看 1.2K关注 0票数 0

我在makefile中遇到了一个问题,包括使用OpenMP进行并行计算。我得到的错误是

不能使用-c、-S或具有多个文件的-E指定

这是我的makefile:

代码语言:javascript
复制
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  $@ $^ ${LIBGSL}
EN

回答 1

Stack Overflow用户

发布于 2013-04-23 12:46:07

线

代码语言:javascript
复制
g++ -c main.cxx $< ${GSLFLAGS} ${CFLAGS}

应改为

代码语言:javascript
复制
g++ -c main.cxx ${GSLFLAGS} ${CFLAGS}

因为,$<扩展到了第一个先决条件,main.cxx,给了g++ -c main.cxx main.cxx。为了避免这种情况,您甚至可以编写以下通用规则:

代码语言:javascript
复制
%.o: %.cxx
    g++ -c -o $@ ${GSLFLAGS} ${CFLAGS} $^

对于main.olateral.o,您不需要特殊的规则,完整的makefile应该是:

代码语言:javascript
复制
GSLFLAGS := pkg-config --cflags gsl
LIBGSL := pkg-config --libs gsl

all: alg

%.o: %.cxx
    g++ -c -o $@ ${GSLFLAGS} ${CFLAGS} $^

alg: main.o lateral.o
    g++ -o  $@ $^ ${LIBGSL}

您可以找到这里上面的语法的详细说明,或者更详细的文档这里

编辑

对不起,我错过了C标志,这里也有一个错误:

代码语言:javascript
复制
CFLAGS = -c -C -O3 -openmp=parallel

您应该删除-c,因为您已经在规则中使用它了,这正是gcc所抱怨的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16169560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档