首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenMP MacOS -ld上的错误:在体系结构x86_64中找不到符号

OpenMP MacOS -ld上的错误:在体系结构x86_64中找不到符号
EN

Stack Overflow用户
提问于 2016-06-25 04:58:10
回答 1查看 2K关注 0票数 3

我已经在我的macos中安装了OpenMPxcode-选择

代码语言:javascript
复制
$ clang-omp --version
clang version 3.5.0
Target: x86_64-apple-darwin15.4.0
Thread model: posix

$ xcode-select --version
xcode-select version 2343.

同时运行以下非常简单的代码

代码语言:javascript
复制
  1 #include <omp.h>                                                                                                                                                              
  2 #include <stdio.h>                                                                                  
  3                                                                                                     
  4 #define n 20                                                                                        
  5                                                                                                     
  6 int main(){                                                                                         
  7                                                                                                     
  8 int i;                                                                                              
  9 int tid;                                                                                            
 10                                                                                                     
 11 omp_set_num_threads(3);                                                                             
 12 #pragma omp parallel for private(tid) schedule(static,1)                                            
 13                                                                                                     
 14 for (i=0; i<n; i++) {                                                                               
 15  tid = omp_get_thread_num();                                                                        
 16  printf("Thread %d executing iteration %d\n", tid, i);                                              
 17 }                                                                                                   
 18 }     

我搞错了

代码语言:javascript
复制
$ clang-omp -openmp parallel.c -v

clang version 3.5.0 
Target: x86_64-apple-darwin15.4.0
Thread model: posix
 "/usr/local/Cellar/clang-omp/2015-04-01/libexec/bin/clang-3.5" -cc1 -triple x86_64-apple-macosx10.11.0 -emit-obj -mrelax-all -disable-free -main-file-name parallel.c -mrelocation-model pic -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -v -dwarf-column-info -resource-dir /usr/local/Cellar/clang-omp/2015-04-01/libexec/bin/../lib/clang/3.5.0 -fdebug-compilation-dir /Users/prayagupd/prayag.data/workspace.programming/parallel-programming/openMP -ferror-limit 19 -fmessage-length 178 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.11.0 -fencode-extended-block-signature -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/63/jvvb4wy16gx6w76mkgsvn52m0000gn/T/parallel-32b98e.o -x c parallel.c
clang -cc1 version 3.5.0 based upon LLVM 3.5.0svn default target x86_64-apple-darwin15.4.0
ignoring nonexistent directory "/usr/local/Cellar/clang-omp/2015-04-01/libexec/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/local/Cellar/clang-omp/2015-04-01/libexec/bin/../lib/clang/3.5.0/include
 /usr/local/opt/libiomp/include/libiomp
 /usr/local/Cellar/clang-omp/2015-04-01/libexec/include/c++/v1
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
 "/usr/bin/ld" -dynamic -arch x86_64 -macosx_version_min 10.11.0 -o penmp /var/folders/63/jvvb4wy16gx6w76mkgsvn52m0000gn/T/parallel-32b98e.o -lSystem
Undefined symbols for architecture x86_64:
  "_omp_get_thread_num", referenced from:
      _main in parallel-32b98e.o
  "_omp_set_num_threads", referenced from:
      _main in parallel-32b98e.o
ld: symbol(s) not found for architecture x86_64
clang-3.5: error: linker command failed with exit code 1 (use -v to see invocation)

gccomp.h都找不到。

代码语言:javascript
复制
$ gcc parallel.c -fopenmp -o parallel
parallel.c:1:10: fatal error: 'omp.h' file not found
#include <omp.h>
         ^
1 error generated.

gcc版本

代码语言:javascript
复制
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin15.4.0
Thread model: posix
EN

回答 1

Stack Overflow用户

发布于 2016-06-25 21:56:58

对于clang-omp问题,您导出库路径了吗?ala

代码语言:javascript
复制
export DYLD_LIBRARY_PATH=(OMPLIB PATH):$DYLD_LIBRARY_PATH

也许你没有安装英特尔的OpenMP库?现代的clang(>3.7),没有随OS一起打包,现在支持开箱即用OpenMP。

对于你的gcc问题,OS实际上并没有提供gcc,它只是将其链接到香草的clang。因此,您正在尝试用不支持OpenMP的编译器编译它。如果你想要gcc,那么安装它通过端口或自制。

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

https://stackoverflow.com/questions/38025122

复制
相关文章

相似问题

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