如何在 NS3 中使用 GMP?

Posted

技术标签:

【中文标题】如何在 NS3 中使用 GMP?【英文标题】:How to use GMP with NS3? 【发布时间】:2021-07-19 08:47:26 【问题描述】:

在 NS3 中调用 __gmpz_set_str() 时,出现此错误:

__gmpz_set_strcollect2的未定义引用:错误:ld返回1退出状态

我已经包含了#include <gmpxx.h>,并且我还安装了libgmp3-devlibgmp-dev

有什么想法吗? 这是 waf 的链接:https://github.com/nsnam/ns-3-dev-git/blob/master/waf 以及 wscript 的链接:https://github.com/nsnam/ns-3-dev-git/blob/master/wscript

# This is the make file content:

#Makefile wrapper for waf

all:
    ./waf

#free free to change this part to suit your requirements

configure:
    ./waf configure --enable-examples --enable-tests

build:
    ./waf build

install:
    ./waf install

clean:
    ./waf clean

distclean:
    ./waf distclean

【问题讨论】:

您是否在链接与 gmp?显示您的 Makefile 和链接器调用。 这能回答你的问题吗? What is an undefined reference/unresolved external symbol error and how do I fix it? 那我们能看到waf构建脚本吗?你可以edit your post 而不是把它塞进 cmets。 您能否编辑您的帖子以显示您如何“在 NS3 中调用 __gmpz_set_str()”,以便我们尝试重现您的问题?显然我的答案是试图解决错误的问题。 【参考方案1】:

编译标志需要在配置时设置,所以正确的咒语是:

LDFLAGS=-lgmp ./waf configure

现在,您可以简单地运行 ./waf 来构建整个代码库,并且将使用 -lgmp 标志。如果你真的想使用make(1),那么

LDFLAGS=-lgmp make configure

应该也可以,但我建议直接使用 waf,因为它是实际的构建系统,而不是 make。

【讨论】:

【参考方案2】:

将以下内容添加到 Makefile 的顶部:

export LINKFLAGS = -lgmp

这将与 some lines in the wscript 交互以确保链接器包含 libgmp。

【讨论】:

不幸的是,我仍然遇到同样的错误。

以上是关于如何在 NS3 中使用 GMP?的主要内容,如果未能解决你的问题,请参考以下文章

如何在ns3中实现GPSR算法?

如何使用 xampp 在 OSX 上正确设置 php_gmp

如何解决 NS3 hg 的权限问题

如何在没有共享库的情况下使用 GMP、MPFR、MPC、ELF 逐个安装 GCC?

如何编写和调用 std::hash? - 对于 gmp 的 mpz_class 和 mpz_t

如何使用 GMP 创建浮点数组?