2012-08-09 86 views
4

我需要在網絡模擬器NS-3的代碼中使用像unordered_map這樣的數據結構。 它使用waf生成器來編譯源代碼。 我很困惑,我應該在哪裏添加-std = C++ 0x來添加到編譯器標誌中? 我嘗試了用追加到主文件的WScript CXXFLAGS:如何構建NS-3以使用C++ 0x/C++ 11庫?

module.env.append_value('CXXFLAGS', '-std=c++0x'); 

但是還是我收到此錯誤:

This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options. C/C++ Problem

我應該還的任何庫添加到我的網絡應用防火牆模塊呢?

P.S:我的GCC的版本是4.4

更新:更新到4.7後,我得到這個錯誤:

error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. 

有沒有辦法告訴編譯器使用,而不是11 0X?

+4

你有沒有考慮使用GCC版本,這是最近2年以上走? – 2012-08-09 03:57:13

+1

嘗試獲得GCC的新版本(如果使用C++ 11,我會說*至少* 4.6,但是甚至4.7.1)。 – Geoffroy 2012-08-09 07:52:19

+0

@NicolBolas我更新了我的GCC和G ++到4.7並重新配置NS,但現在當它達到同一點時,它會出現此錯誤:error:#error該文件需要編譯器和庫支持ISO C++ 2011標準。此支持目前是實驗性的,必須使用-std = C++ 11或-std = gnu ++ 11編譯器選項啓用。 – hashtpaa 2012-08-09 20:00:10

回答

8

這裏是解決方案:

首先升級GCC到4.7 NS-3會導致更多的錯誤是由於標準的變化,不解決問題。所以我將gcc和g ++改回4.4.3。

但爲了擺脫這種錯誤的(因爲它說的)這個選項應該加入CXXFLAGS:

-std=c++0x 

要添加一個選項CXXFLAG您可以使用此:

CXXFLAGS="-std=c++0x" ./waf configure 

或者如果你想添加選項到WAF配置:

CXXFLAGS="-std=c++0x" ./waf -d debug --enable-examples --enable-tests configure