您的位置:首页 > Web前端

错误:undefined reference to `__gxx_personality_v0' .

2014-03-13 23:43 405 查看
在编译一个基本的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

参考文章:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐