MacOS Mojave安装RPL2时libgomp缺失问题求助
解决MacOS Mojave 10.14.16安装RPL/2时
libgomp缺失的问题 这个问题的核心是:MacOS默认的gcc其实是Clang的别名,而Clang并不提供libgomp(GCC专属的OpenMP并行库)——哪怕你已经安装了带gfortran的GCC,configure脚本大概率还是在调用系统默认的Clang,导致找不到目标库。下面是具体的解决步骤:
步骤1:确认brew安装的GCC路径
首先确保你已经通过brew安装了完整的GCC包(它自带gfortran和libgomp):
brew install gcc
安装完成后,brew会把GCC的二进制文件命名为gcc-x(x是具体版本号,比如13),可以通过以下命令定位路径:
which gcc-13
通常路径会是/usr/local/bin/gcc-13,对应的C++编译器是/usr/local/bin/g++-13。
步骤2:强制configure使用brew的GCC
你需要在运行./configure时,明确指定使用brew安装的GCC作为编译器,并告知libgomp的位置。可以直接在命令行传递参数:
CC=/usr/local/bin/gcc-13 CXX=/usr/local/bin/g++-13 LDFLAGS="-L/usr/local/opt/gcc/lib/gcc/13" ./configure
如果你的GCC版本不是13,记得替换成实际的版本号。
或者先设置环境变量,让后续所有编译命令默认使用brew的GCC:
export PATH="/usr/local/opt/gcc/bin:$PATH" export CC=gcc export CXX=g++ export LDFLAGS="-L/usr/local/opt/gcc/lib"
设置完成后再运行./configure,脚本就会自动找到正确的GCC和libgomp了。
步骤3:完成编译安装
如果configure成功通过,接下来就可以正常执行:
make sudo make install
补充说明
从你提供的config.log片段能明显看出,configure调用的gcc是系统默认的Clang(只有Clang会报ld: library not found for -lgomp这个错误),所以关键就是让configure切换到真正的GCC编译器。
附用户提供的config.log相关片段:
configure:7433: checking for vim configure:7449: found /usr/bin/vim configure:7461: result: yes configure:7507: checking for main in -lm configure:7526: gcc -o conftest -g -O2 -O2 -fno-strict-overflow conftest.c -lm >&5 configure:7526: $? = 0 configure:7535: result: yes configure:7548: checking for pthread_mutex_init in -lc configure:7573: gcc -o conftest -g -O2 -O2 -fno-strict-overflow conftest.c -lc -lm >&5 configure:7573: $? = 0 configure:7582: result: yes configure:7687: checking for omp_get_num_procs in -lgomp configure:7712: gcc -o conftest -g -O2 -O2 -fno-strict-overflow conftest.c -lgomp -lc -lm >&5 ld: library not found for -lgomp clang: error: linker command failed with exit code 1 (use -v to see invocation) configure:7712: $? = 1
内容的提问来源于stack exchange,提问作者fricadelle
相关产品推荐
相关产品推荐

