在Visual Studio Code中运行OpenMP代码出现链接错误的技术咨询
解决GCC编译OpenMP代码时的undefined reference错误
兄弟,你这问题我之前碰过好多次——这是因为GCC默认不会自动帮你链接OpenMP的库,虽然你代码里包含了omp.h头文件,编译阶段能识别OpenMP的指令,但到链接阶段找不到omp_get_thread_num()的实现,就报这个错了。
给你两个可行的解决办法:
手动修改编译命令
把你原来的编译命令:gcc test.c -o test改成下面这样,加上
-fopenmp参数——这个参数会同时开启OpenMP的编译支持,并且自动链接对应的库:gcc -fopenmp test.c -o test配置VS Code的Code Runner插件(如果用它运行代码)
如果你是用VS Code里的Code Runner一键运行的,可以去插件设置里找到「Code-runner: Executor Map」,修改C语言的运行命令,把默认的"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"改成
"c": "cd $dir && gcc -fopenmp $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"这样以后运行OpenMP代码就不用每次手动加参数了。
另外提个小细节:你代码里第二个printf的格式字符串写错了,"world(%d\n"少了个右括号,应该改成"world(%d)\n",不然输出会乱掉,虽然不影响编译,但还是改了比较好~
内容的提问来源于stack exchange,提问作者Jokerp
相关产品推荐
相关产品推荐

