错误:undefined reference to `__gxx_personality_v0' .

在编译一个基本的MPI程序的时候遇到了错误

程序如下:

名称为:Demo.cpp

#include <stdio.h>
#include <mpi.h>

int main(int argc, char** argv){
        int rank;

        MPI_Init(&argc, &argv);

        MPI_Comm_rank(MPI_COMM_WORLD, &rank);

        printf("Hello, world! I'm rank %d\n", rank);

        MPI_Finalize();
}
我所用编译命令为:mpicc -o Demo Demo.cpp

然后就遇到了错误提示::undefined reference to `__gxx_personality_v0' .
经查阅资料与尝试,得知

1.    * 编译 c++ 程序需要添加 -lstdc++   sample: gcc -lstdc++ -o test test.cpp,否则会报 "undefinedreference to '__gxx_personality_v0' " 错误

       此处如果想用mpicc命令而不报错,那么就应该用: mpicc -lstdc++  -o  Demo Demo.cpp 或者直接用mpicxx来编译即可

2. 用gcc命令编译C程序,用g++命令编译C++程序。

g++和gcc本质一样的,本质上还是gcc,我们实验室所有的c++程序都是用gcc编译的,一般的程序用gcc足够了。 对于 C++ 程序,编译的时候用 gcc 或者 g++ 都可以。但是在进行连接的时候最好用 g++,因为用 g++ 会自动进行 C++ 标准库的连接;用 gcc 连接 C++ 程序也可以,但是需要人为指定连接 C++ 标准库,否则就会出现undefined reference to `__gxx_personality_v/0' 之类的错误。

可见-lstdc++ 所对应的是标准C++库

3. 编译器是如何判断是C++程序还是C程序了,我初步判断是从*.cpp与*.c来判断。我来把原文件名改为Demo.c试试,结果果然不再报错。

4. 编译成功后还出现了另外一个错误,不过错误以前遇到过,好办,请参考以前的文章mpiexec_logon01: cannot connect to local mpd (/tmp/mpd2.console_ycai), 另外还可以参考该文章:mpirun mpd mpiexec


参考文章:点击打开链接

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值