Errors at compile time with NS >= 3.16:

  /usr/include/boost/graph/dijkstra_shortest_paths.hpp:165:53: error: no matching function for call to ‘get(double*&, long unsigned int)’
           D source_dist = get(m_distance, source(e, g));

  /usr/include/boost/graph/dijkstra_shortest_paths.hpp:165:53: note:   mismatched types ‘boost::detail::underlying_edge_desc_map_type<E>’ and ‘double*’
           D source_dist = get(m_distance, source(e, g));

Solution found:

  Return to the commit 4228940c3af3e89f665134d78718c02f4e65e587. This modification was revoked in bcaae643e7ff781289e40436b54511a6abf43f04 with the parallel channel calculation added. I don't really know if this line is a problem with the paralell calculation but it's the only solution I've found to compile. All tests and examples provided work well.
Errors at compile time with NS >= 3.17:

    File "/home/ju/doctorat/ns3/ns-allinone-3.17/ns-3.17/src/plc/wscript", line 49, in build
      headers = bld.new_task_gen(features=['ns3header'])
  AttributeError: 'BuildContext' object has no attribute 'new_task_gen'

Solution found:

  Use directly bld() instead of bld.new_task_gen().
  See https://groups.google.com/forum/#!msg/ns-3-users/JzUvWiWn9UY/dLn3AMMIdt0J
Errors at compile time with NS >= 3.17 (Waf >= 1.6):

    File "/home/ju/doctorat/ns3/ns-allinone-3.17/ns-3.17/src/plc/wscript", line 85, in build
      bld.add_subdirs('examples')
  AttributeError: 'BuildContext' object has no attribute 'add_subdirs'

Solution found:

  Use recurse() instead of add_subdirs().
  See https://ftp.samba.org/pub/unpacked/waf/docs/book/intro_waf_1.6.txt
Errors at compile time with NS >= 3.17:

  ../src/plc/model/plc-net-device.cc: In member function ‘virtual void ns3::PLC_NetDevice::DoStart()’:
  ../src/plc/model/plc-net-device.cc:87:2: error: ‘DoStart’ is not a member of ‘ns3::NetDevice’
    NetDevice::DoStart ();
    ^
  ../src/plc/model/plc-net-device.cc: In member function ‘void ns3::PLC_NetDevice::LinkUp()’:
  ../src/plc/model/plc-net-device.cc:220:13: error: ‘class ns3::PLC_Phy’ has no member named ‘Start’
     GetPhy()->Start();

Solution found:

  Use DoInitialize() instead of DoStart() and Initialize() instead of Start().
  See http://code.nsnam.org/ns-3.17/raw-file/96ada8e6b920/CHANGES.html
Errors at compile time with NS >= 3.18:

  ../src/plc/test/plc-test-suite.cc:62:32: warning: ‘void ns3::TestCase::AddTestCase(ns3::TestCase*)’ is deprecated (declared at ./ns3/test.h:881) [-Wdeprecated-declarations]
     AddTestCase (new PlcTestCase1);

Solution found:

  Add EXTENSIVE argument to AddTestCase().
  See http://www.nsnam.org/doxygen/deprecated.html
Errors at compile time with NS >= 3.18:

  src/plc/bindings/ns3module.h:1871:5: error: ‘TimeChecker’ in namespace ‘ns3’ does not name a type
       ns3::TimeChecker *obj;
       ^

Solution found:

  Delete all TimeChecker occurences in bindings/modulegen__gcc_*.py. TimeChecker seems to not be used in plc, and all tests and examples provided work well.