在 C++ 程序上使用 mpicc 链接失败

2024-02-23

我正在运行 Ubuntu 11.04 64 位。我已经安装了 OpenMPI。我正在尝试构建以下代码,这是 Gropp/Lusk/Skjellum 所著的“Using MPI”一书中测试问题的片段:

#include <math.h>
#include "mpi.h"

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

    MPI::Init(argc, argv);

    size = MPI::COMM_WORLD.Get_size();
    rank = MPI::COMM_WORLD.Get_rank();

    MPI::Finalize();
    return 0;
}

从终端,我可以使用 mpicc 包装器检索在我的计算机上编译和链接所需的以下信息:

$ mpicc --showme:compile
-I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread
$ mpicc --showme:link
-pthread -L/usr/lib/openmpi/lib -lmpi -lopen-rte -lopen-pal -ldl -Wl,--export-dynamic -lnsl -lutil -lm -ldl

我可以成功编译代码。但是,那链接失败。这是我的编译器和链接器步骤:

make all 
Building file: ../main.cpp
Invoking: GCC C++ Compiler
mpicc -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -O0 -g3 -Wall -c -fmessage-length=0 -pthread -MMD -MP -MF"main.d" -MT"main.d" -o"main.o" "../main.cpp"
Finished building: ../main.cpp

Building target: test
Invoking: GCC C++ Linker
mpicc -L/usr/lib/openmpi/lib -pthread -Wl,--export-dynamic -o"test"  ./main.o   -lm -ldl -lmpi -lopen-rte -lopen-pal -lnsl -lutil
./main.o: In function `main':
/home/djunderw/ncsu/workspace/test/Debug/../main.cpp:20: undefined reference to `MPI::COMM_WORLD'
/home/djunderw/ncsu/workspace/test/Debug/../main.cpp:21: undefined reference to `MPI::COMM_WORLD'
./main.o: In function `__static_initialization_and_destruction_0':
/usr/include/c++/4.4/iostream:72: undefined reference to `std::ios_base::Init::Init()'
/usr/include/c++/4.4/iostream:72: undefined reference to `std::ios_base::Init::~Init()'
.......

I used .......上面指出错误消息不断出现的事实 - 其中有很多错误消息,但我认为没有必要将它们全部显示在这里。如果是的话,请询问,我将全部粘贴。

我怀疑我的链接器标志的顺序不正确。另一个线程得出了这个结论:使用 G++ 处理 MPI 代码时出现链接错误 https://stackoverflow.com/questions/6451340/link-errors-while-using-g-for-mpi-code。但如果是这样,我无法弄清楚哪里出了问题。

为什么我的链接失败?


SOLVED:我变了mpicc to mpic++,现在可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 程序上使用 mpicc 链接失败 的相关文章

  • 使用 Xamarin.Forms 和 Zxing 生成 QR 码

    我在网上看到了很多关于这个的内容 旧帖子 但似乎没有什么对我有用 我正在尝试从字符串中生成二维码并将其显示在应用程序中 这就是我一开始的情况 qrCode new ZXingBarcodeImageView BarcodeFormat Ba
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • 以下 PLINQ 代码没有改进

    我没有看到使用以下代码的处理速度有任何改进 IEnumerable
  • 为什么 C# 中同一类型的隐式和显式运算符不能共存? [复制]

    这个问题在这里已经有答案了 为什么同一类中两个相同类型的运算符 显式和隐式 不能共存 假设我有以下内容 public class Fahrenheit public float Degrees get set public Fahrenhe
  • 类中是否可以有虚拟类声明?

    我正在为个人项目中框架的各个组件设置一个接口 我突然想到了一些我认为可能对接口有用的东西 我的问题是这是否可能 class a public virtual class test 0 class b public a public clas
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • 关闭整数的最右边设置位

    我只需要关闭最右边的设置位即可 我的方法是找到最右边位的位置 然后离开该位 我编写这段代码是为了这样做 int POS int n int p 0 while n if n 2 0 p else break n n 2 return p i
  • 判断串口是普通COM还是SPP

    我正在寻找一种方法来确定 COM 是标准 COM 还是 SPP COM 也称为 COM 设备的电缆替换蓝牙适配器 我有一个可以在 USB COM gt USB 和蓝牙下工作的设备 并且蓝牙接口可以与 SPP 一起工作 我目前正在使用Syst
  • C 类型命名约定,_t 或 ALLCAPS

    我一直想知道是否有任何命名约定 例如何时对类型使用全部大写以及何时追加 t 什么时候不使用任何东西 我知道当时 K R 发布了各种有关如何使用 C 的文档 但我找不到任何相关内容 在 C 标准库类型中 t看起来漂亮占主导地位 time t
  • 检测 TextBox 中的 Tab 键按下

    I am trying to detect the Tab key press in a TextBox I know that the Tab key does not trigger the KeyDown KeyUp or the K
  • 为什么 std::function 不是有效的模板参数,而函数指针却是?

    我已经定义了名为的类模板CallBackAtInit其唯一目的是在初始化时调用函数 构造函数 该函数在模板参数中指定 问题是模板不接受std function作为参数 但它们接受函数指针 为什么 这是我的代码 include
  • 如何增加ofstream的缓冲区大小

    我想增加 C 程序的缓冲区大小 以便它不会过于频繁地写入 默认缓冲区是 8192 字节 我尝试使用 pubsetbuf 将其增加到 200K 原始代码 ofstream fq fastq1 cstr ios out fastq1 is a
  • 将 2 个字节转换为整数

    我收到一个 2 个字节的端口号 最低有效字节在前 我想将其转换为整数 以便我可以使用它 我做了这个 char buf 2 Where the received bytes are char port 2 port 0 buf 1 port
  • 如何对STL向量进行排序?

    我想排序一个vector vector
  • 测验;这个编译了吗?如果是的话它会返回什么(我知道答案)

    我最近发现这个错字 if name find string npos 显然开发者的意思是输入 if name find string npos 但令我惊讶的是发现错误甚至编译 Wall Werror 没有尝试过 pedantic 那么 咖啡
  • WPF DataGrid - 在每行末尾添加按钮

    我想在数据网格的每一行的末尾添加一个按钮 我找到了以下 xaml 但它将按钮添加到开头 有人知道如何在所有数据绑定列之后添加它吗 这会将按钮添加到开头而不是末尾
  • 使用 Unity 在 C# 中发送 http 请求

    如何使用 Unity 在 C 中发送 HTTP GET 和 POST 请求 我想要的是 在post请求中发送json数据 我使用Unity序列化器 所以不需要 新的 我只想在发布数据中传递一个字符串并且能够 将 ContentType 设置
  • 在 Qt 中播放通知(频率 x)声音 - 最简单的方法?

    Qt 5 1 或更高版本 我需要播放频率为 x 的通知声音 n 毫秒 如果我能像这样组合音调那就太好了 1000Hz 持续 2 秒 然后 3000Hz 持续 1 秒 最简单的方法是使用文件 WAV MP3 例如如此处所述 如何用Qt播放声音
  • 用数组或向量实现多维数组

    我想使用单个数组或向量实现多维数组 可以像通常的多维数组一样访问它 例如 a 1 2 3 我陷入困境的是如何实施 操作员 如果数组的维数为 1 则 a 1 应该返回位于索引 1 处的元素 但是如果维数大于一怎么办 对于嵌套向量 例如 3 维
  • 时间:2019-03-17 标签:c#TimerStopConfusion

    我想通过单击按钮时更改文本颜色来将文本框文本设置为 闪烁 我可以让文本按照我想要的方式闪烁 但我希望它在闪烁几次后停止 我不知道如何在计时器触发几次后让它停止 这是我的代码 public Form1 InitializeComponent

随机推荐

  • HttpListener:请求的地址在此上下文中无效

    当创建一个HttpListener对象使用 var server new HttpListener server Prefixes Add http 8080 server Start 一切正常 但是 当我使用 var server new
  • 对齐 2 个矩阵以实现最大重叠

    那么下面是一道面试题 Given two N2 matrices with entries being 0 or 1 How can we find out the number of maximum overlapping 1 s pos
  • 用户因“记住我”而注销

    我似乎无法理解 Identity 2 0 和 cookies 的工作方式 ASP NET MVC 5 我想要的是 如果用户登录并选中 记住我 复选框 我不希望他永远退出 但是发生的情况是 用户在一定时间跨度后退出 如果用户在时间跨度之前关闭
  • 致命错误:未捕获的 CurlException:26:创建表单数据失败抛出

    我收到以下错误 Fatal error Uncaught CurlException 26 failed creating formpost data thrown in home u801961841 public html inc li
  • JQuery 可排序列表和固定/锁定项目

    是否可以锁定 JQuery 可排序列表中的列表项 使这些项保留在列表中的特定位置 例如 考虑这个带有锁定项目的伪列表 item A item B locked item C locked item D item E item F item
  • 是否可以在 PlantUML 中对参与者进行分组?

    我想要一个围绕几个参与者的盒子 表明他们是一个实体的一部分 如何在 PlantUML 中做到这一点 您可以将参与者 装箱 如 plantuml 网站上所示 摘录如下 startuml box Internal Service LightBl
  • 无法使用 VS 2010 启动 SOS.dll

    我正在尝试启动SOS dll from Visual Studio 2010 旗舰版 我收到以下错误 命令期间出错 IDebugClient 要求未实现的接口 命令期间出错 异常 c0000005 发生在 1BC4EF9E 我还为该项目启用
  • 我在 IE 中遇到语法错误,但在 Chrome 中却没有

    所以我有这段代码 一个函数 可以在 Google Chrome Fire Fox 中运行 但不能在 IE 中运行 如果我评论这一行 一切都会运行良好 除了该行至关重要 我有一个名为 ReadCookie 的函数 它基本上只是将 cookie
  • jqgrid:拖放多行

    如何使用 jqgrid 拖放多行 即我可以拖动多于一行吗 我怎么知道这在 jqGrid 中是不可能的 jQuery UI 的可排序功能是否支持它 请参阅http jqueryui com demos sortable http jquery
  • Html:

    标记的正确顺序是什么?

    根据标准 以下哪一项 如果有的话 是正确的 a href p Link Description p a p a href Link Description a p 我知道它们的功能相同 但这是一个最佳实践 标准问题 这也适用于 ul ol
  • C中通过套接字发送文件

    我在学校接到一个任务 用C语言 针对Linux 编写一个FTP程序 我很快就可以使用所有基本功能 ls cd 但是我在文件传输部分遇到了麻烦 我使用 sendfile 通过套接字发送文件 如下所示 int fd open temp O RD
  • postgres hstore同时存在和不存在[重复]

    这个问题在这里已经有答案了 我在远程服务器上设置了 Rails 应用程序并创建了 hstore 扩展 sudo u postgres psql CREATE EXTENSION hstore 然后 我部署了应用程序的迭代 该迭代在 post
  • 如何使用 postgresql 验证 Rails 中的重叠时间

    我有一个Event model具有start at时间和end at我的日程应用程序中的时间 我想在保存之前验证重叠时间 我创建了我的 Rails 应用程序Cloud9 我的视图图像如下 Day1 07 00 07 20 event1 10
  • JMESpath 表达式,用于按属性过滤对象并返回设置了此属性的对象名称列表

    是否可以编写 JMESPath 表达式来返回设置了特定子属性值的对象名称列表 在下面的示例中 我想获取所有主机名的列表 其中文件存在 stat 存在设置为 true 我的目标是使用 Ansible hostvars 结构来获取存在特定文件的
  • 相当于 .NET 中的 Windows 错误代码

    Microsoft 为 Windows 提供了一系列标准化错误代码 http msdn microsoft com en us library ms681381 VS 85 aspx 当适用时 我发现它们可以在我自己的应用程序中参考 而不是
  • 如何比较相似的代码库?

    我们有几个基于相同代码库构建的 C 项目 它们之间有很多相似之处和共同的代码 但它们是独立开发的 来源未以任何方式共享 即使底层代码没有改变 并且个别行将被调整 更改和替换 类和文件也将被重命名 我希望能够比较不同的代码库并找出有多少代码仍
  • 理解 jQuery 中的 $.proxy()

    From docs http api jquery com jquery proxy 我明白那个 proxy 会改变作为参数传递的函数的范围 有人可以更好地向我解释一下吗 我们为什么要这样做 它最终要做的是确保this函数中将是您想要的值
  • 从 Arrays.asList 返回的列表是否保持与原始数组集合相同的顺序?

    我有一个 ArrayList 我对其进行了多次迭代 并且看起来它没有保持迭代的顺序 我更深入地研究 似乎为这次迭代编写的自定义迭代器标记 由其他人 首先获取传入的 ArrayList 并在迭代之前使用 Arrays asList 将其桥接到
  • 如何从内存字节创建“假”dart:io 文件?

    我有一个 blob 的内存字节 但我想要处理这个 blob 的 API 只接受 dart io File 对象 有没有办法创建一个 假 dart io File 简单地包装我的内存字节 以便我可以将这个 假 文件传递给我的API 假设文件系
  • 在 C++ 程序上使用 mpicc 链接失败

    我正在运行 Ubuntu 11 04 64 位 我已经安装了 OpenMPI 我正在尝试构建以下代码 这是 Gropp Lusk Skjellum 所著的 Using MPI 一书中测试问题的片段 include