c++ - 并行程序不会使

标签 c++ linux makefile openmp

我已经移动了一个在 visual studio 中运行并构建的并行程序。我正在使用 C++ 并在英特尔编译器上编译。我必须将项目移动到 linux 机器上并运行它。所以我制作了以下 make 文件。

parallel: main.o Node.o
    icpc -o parallel main.o Node.o

main.o: main.cpp
    icpc -c $(CONFIG) main.cpp

Node.o: Node.cpp
    icpc -c $(CONFIG) Node.cpp

clean:
    rm -f parallel *.o core core.*

CONFIG  = -openmp

但得到这个输出。我不明白为什么它在 Windows 上工作时无法识别。

main.cpp:(.text+0x4e): undefined reference to `__kmpc_begin'
main.cpp:(.text+0xa2): undefined reference to `__kmpc_global_thread_num'
main.cpp:(.text+0xb2): undefined reference to `__kmpc_ok_to_fork'
main.cpp:(.text+0xc9): undefined reference to `__kmpc_fork_call'
main.cpp:(.text+0xdb): undefined reference to `__kmpc_serialized_parallel'
main.cpp:(.text+0xfa): undefined reference to `__kmpc_end_serialized_parallel'
main.cpp:(.text+0x106): undefined reference to `__kmpc_ok_to_fork'
""                  ""                         '""             """

虽然我认为这里没有必要,但这是我的项目。

http://bitbucket.org/pumphouse/disjoint-sets-serial-parallel

最佳答案

您没有使用 -openmp 进行链接;将您的第二行更改为

 icpc $(CONFIG) -o parallel main.o Node.o

关于c++ - 并行程序不会使,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558258/

相关文章:

c++ - gcc 自动依赖完整路径

c++ - 线性链式工厂和 move 语义

makefile - 如何学习使用make?我永远无法使用 make 和 makefile 构建源代码

c++ - 使用什么设计模式?

linux - shell 脚本、for 循环、ssh 和别名

linux - 是否可以设置 'expect' 的退出代码

在 Linux 64 位上结合 C 和汇编(32 位代码)

c++ - 多个目标的Makefile优化

c++ - std::vector 的替代方案,因为重新分配会使指向元素的指针无效

c++ - std::string 试图释放错误的内存