【发布时间】:2021-06-21 08:35:27
【问题描述】:
我有一个使用 OpenMPI 库的 C 程序。我也在使用 libm 中的函数,并在我的程序中包含了math.h。使用mpicc编译时,像这样mpicc -lm program.c -o program.out
编译成功,但是链接失败,出现ld无法链接libm,出现以下三行错误/usr/bin/ld: /tmp/cct0O5Yv.o: undefined reference to symbol 'log10@@GLIBC_2.2.5'/usr/bin/ld: /lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command linecollect2: error: ld returned 1 exit status
据我了解,mpicc 只是gcc 的包装器,其工作是将编译和链接标志传递给gcc。为什么不将-lm 传递给gcc?如何使其将其他标志传递给gcc?我无法在手册页中找到任何内容。
我将--showme:compiler 和--showme:linker 与mpicc 一起使用,并将这些标志与-lm 一起传递给-lm,它生成的最终可执行文件就好了。
【问题讨论】:
标签: c gcc mpi compiler-flags