在具有NS-3版本3.21和dce版本1.4的NS-3 DCE(网络模拟器3直接代码执行)中,默认情况下包含的二进制文件之一是iperf。此版本的iperf为2.0.5,而最新版本的iperf为3.0.10。由于iperf3与iperf2不向后兼容,并且iperf3提供了一些有趣的新功能,如果我可以将iperf3与NS-3 dce一起使用,将非常有帮助。

如以下链接所述:
http://www.nsnam.org/docs/dce/release/1.1/manual/html/dce-user-newapps.html
必须调整某些要求(例如makefile中的标志),以生成可由dce使用的二进制文件。

但是,我无法正常工作。我尝试更改了iperf3随附的所有3个Makefile
(-fpic CFLAG和-pie -rdynmic LDFLAGS),但是在尝试构建它时仍然出现错误:

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/gcrt1.o : relocation R_X86_64_32S against '__libc_csu_fini' can not be used when making a shared object: recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/gcrt1.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [iperf3_profile] Error 1
make[2]: Leaving directory


有谁知道该怎么办?

任何帮助都非常感谢!

最佳答案

您可以按照以下guide来使用libOS构建iperf3:


  ...上述错误是由于gcc配置文件之间的兼容性差
  选项('-pg')和PIC选项。
  
  因为即使出现此错误也生成了主二进制文件(iperf3),所以您
  可以在(顶部)/src/.libs/iperf3中看到iperf3二进制文件。
  
  DCE似乎需要禁用iperf3_profile的构建
  建立。欢迎补丁;)


但是,由于缺少符号(__h_errno_location),当前无法运行iperf3。可以通过teto的patch来解决此问题。

关于linux - NS-3 dce和iperf3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27546249/

10-13 08:45