【问题标题】:Unable to pass additional flags to gcc through mpicc无法通过 mpicc 将其他标志传递给 gcc
【发布时间】: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 line
collect2: error: ld returned 1 exit status

据我了解,mpicc 只是gcc 的包装器,其工作是将编译和链接标志传递给gcc。为什么不将-lm 传递给gcc?如何使其将其他标志传递给gcc?我无法在手册页中找到任何内容。

我将--showme:compiler--showme:linkermpicc 一起使用,并将这些标志与-lm 一起传递给-lm,它生成的最终可执行文件就好了。

【问题讨论】:

    标签: c gcc mpi compiler-flags


    【解决方案1】:

    事实证明,传递给mpicc 的命令行参数的顺序很重要。为了使mpicc 将附加标志传递给gcc,请将它们放在源文件之前

    mpicc -lm program.c -o program.out

    放置在源文件之后的标志将被视为包装器的标志,而不是“内核”(在本例中为 gcc)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多