Hi,
I am trying to modify RIP in ns-3 to support some cryptographic functions. I was able to link openssl properly and was able to run a simple script from my scratch folder. I then proceeded to add basic openssl code to the src/internet/model/rip.cc code. I modified the wscript file in the src/internet/ directory to link the library with rip.cc properly. I included my header files and then rip.cc compiled properly. The problem is that other files are trying to be linked are failing because they do not link the function calls I am making in rip.cc.
Here is the output:
Waf: Entering directory `/home/spencer/Documents/ns-3-allinone/ns-3-dev/build'
[1237/2689] Compiling src/internet/model/rip.cc
[2424/2689] Linking build/lib/libns3-dev-internet-optimized.so
[2425/2689] Linking build/lib/libns3-dev-applications-optimized.so
[2426/2689] Linking build/lib/libns3-dev-point-to-point-layout-optimized.so
[2427/2689] Linking build/lib/libns3-dev-internet-apps-optimized.so
[2428/2689] Linking build/lib/libns3-dev-wave-optimized.so
[2429/2689] Linking build/lib/libns3-dev-wimax-optimized.so
[2430/2689] Linking build/lib/libns3-dev-flow-monitor-optimized.so
[2431/2689] Linking build/lib/libns3-dev-olsr-optimized.so
[2432/2689] Linking build/lib/libns3-dev-sixlowpan-optimized.so
[2433/2689] Linking build/lib/libns3-dev-dsr-optimized.so
[2434/2689] Linking build/lib/libns3-dev-mesh-optimized.so
[2435/2689] Linking build/lib/libns3-dev-csma-layout-optimized.so
[2436/2689] Linking build/lib/libns3-dev-aodv-optimized.so
[2437/2689] Linking build/lib/libns3-dev-lte-optimized.so
[2438/2689] Linking build/lib/libns3-dev-nix-vector-routing-optimized.so
[2439/2689] Linking build/lib/libns3-dev-dsdv-optimized.so
[2440/2689] Linking build/lib/libns3-dev-tap-bridge-optimized.so
[2441/2689] Linking build/lib/libns3-dev-aodv-test-optimized.so
[2442/2689] Linking build/lib/libns3-dev-applications-test-optimized.so
[2443/2689] Linking build/lib/libns3-dev-dsr-test-optimized.so
[2444/2689] Linking build/lib/libns3-dev-dsdv-test-optimized.so
[2445/2689] Linking build/lib/libns3-dev-flow-monitor-test-optimized.so
[2446/2689] Linking build/lib/libns3-dev-internet-test-optimized.so
[2447/2689] Linking build/lib/libns3-dev-internet-apps-test-optimized.so
[2448/2689] Linking build/lib/libns3-dev-mesh-test-optimized.so
[2449/2689] Linking build/lib/libns3-dev-olsr-test-optimized.so
[2450/2689] Linking build/lib/libns3-dev-sixlowpan-test-optimized.so
[2451/2689] Linking build/lib/libns3-dev-wave-test-optimized.so
[2452/2689] Linking build/lib/libns3-dev-wimax-test-optimized.so
[2453/2689] Linking build/src/aodv/examples/ns3-dev-aodv-optimized
/usr/bin/ld: lib/libns3-dev-internet-optimized.so: undefined reference to `PEM_read_bio_RSAPrivateKey'
/usr/bin/ld: lib/libns3-dev-internet-optimized.so: undefined reference to `BIO_new_mem_buf'
collect2: error: ld returned 1 exit status
And here is more detailed output:
[2062/2689] Linking build/lib/libns3-dev-netanim-test-optimized.so
09:13:59 runner ['/usr/bin/g++', '-Wl,--soname=libns3-dev-netanim-test-optimized.so', '-shared', '-pthread', 'src/netanim/test/netanim-test.cc.3.o', '-o/home/spencer/Documents/ns-3-allinone/ns-3-dev/build/lib/libns3-dev-netanim-test-optimized.so', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-Llib', '-lns3-dev-netanim-optimized', '-lns3-dev-wimax-optimized', '-lns3-dev-lte-optimized', '-lns3-dev-applications-optimized', '-lns3-dev-wave-optimized', '-lns3-dev-point-to-point-layout-optimized', '-lns3-dev-internet-optimized', '-lns3-dev-bridge-optimized', '-lns3-dev-point-to-point-optimized', '-lns3-dev-mpi-optimized', '-lns3-dev-traffic-control-optimized', '-lns3-dev-wifi-optimized', '-lns3-dev-lr-wpan-optimized', '-lns3-dev-spectrum-optimized', '-lns3-dev-buildings-optimized', '-lns3-dev-propagation-optimized', '-lns3-dev-uan-optimized', '-lns3-dev-mobility-optimized', '-lns3-dev-energy-optimized', '-lns3-dev-csma-optimized', '-lns3-dev-config-store-optimized', '-lns3-dev-virtual-net-device-optimized', '-lns3-dev-fd-net-device-optimized', '-lns3-dev-network-optimized', '-lns3-dev-stats-optimized', '-lns3-dev-antenna-optimized', '-lns3-dev-core-optimized', '-lrt']
[2133/2689] Linking build/lib/libns3-dev-test-test-optimized.so
09:13:59 runner ['/usr/bin/g++', '-Wl,--soname=libns3-dev-test-test-optimized.so', '-shared', '-pthread', 'src/test/csma-system-test-suite.cc.4.o', 'src/test/ns3tc/fq-codel-queue-disc-test-suite.cc.4.o', 'src/test/ns3tc/pfifo-fast-queue-disc-test-suite.cc.4.o', 'src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc.4.o', 'src/test/ns3tcp/ns3tcp-interop-test-suite.cc.4.o', 'src/test/ns3tcp/ns3tcp-loss-test-suite.cc.4.o', 'src/test/ns3tcp/ns3tcp-no-delay-test-suite.cc.4.o', 'src/test/ns3tcp/ns3tcp-socket-test-suite.cc.4.o', 'src/test/ns3tcp/ns3tcp-state-test-suite.cc.4.o', 'src/test/ns3tcp/nsctcp-loss-test-suite.cc.4.o', 'src/test/ns3tcp/ns3tcp-socket-writer.cc.4.o', 'src/test/ns3wifi/wifi-interference-test-suite.cc.4.o', 'src/test/ns3wifi/wifi-msdu-aggregator-test-suite.cc.4.o', 'src/test/ns3wifi/wifi-ac-mapping-test-suite.cc.4.o', 'src/test/traced/traced-callback-typedef-test-suite.cc.4.o', 'src/test/traced/traced-value-callback-typedef-test-suite.cc.4.o', '-o/home/spencer/Documents/ns-3-allinone/ns-3-dev/build/lib/libns3-dev-test-test-optimized.so', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-Llib', '-lns3-dev-test-optimized', '-lns3-dev-lte-optimized', '-lns3-dev-applications-optimized', '-lns3-dev-csma-layout-optimized', '-lns3-dev-dsr-optimized', '-lns3-dev-flow-monitor-optimized', '-lns3-dev-mesh-optimized', '-lns3-dev-olsr-optimized', '-lns3-dev-sixlowpan-optimized', '-lns3-dev-internet-apps-optimized', '-lns3-dev-point-to-point-layout-optimized', '-lns3-dev-internet-optimized', '-lns3-dev-bridge-optimized', '-lns3-dev-point-to-point-optimized', '-lns3-dev-mpi-optimized', '-lns3-dev-traffic-control-optimized', '-lns3-dev-buildings-optimized', '-lns3-dev-config-store-optimized', '-lns3-dev-csma-optimized', '-lns3-dev-wifi-optimized', '-lns3-dev-lr-wpan-optimized', '-lns3-dev-spectrum-optimized', '-lns3-dev-propagation-optimized', '-lns3-dev-uan-optimized', '-lns3-dev-mobility-optimized', '-lns3-dev-energy-optimized', '-lns3-dev-virtual-net-device-optimized', '-lns3-dev-fd-net-device-optimized', '-lns3-dev-network-optimized', '-lns3-dev-stats-optimized', '-lns3-dev-antenna-optimized', '-lns3-dev-core-optimized', '-lrt']
[2198/2689] Linking build/src/aodv/examples/ns3-dev-aodv-optimized
09:13:59 runner ['/usr/bin/g++', '-pthread', 'src/aodv/examples/aodv.cc.1.o', '-o/home/spencer/Documents/ns-3-allinone/ns-3-dev/build/src/aodv/examples/ns3-dev-aodv-optimized', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-Wl,--no-as-needed', '-Llib', '-lns3-dev-aodv-optimized', '-lns3-dev-wifi-optimized', '-lns3-dev-spectrum-optimized', '-lns3-dev-propagation-optimized', '-lns3-dev-mobility-optimized', '-lns3-dev-energy-optimized', '-lns3-dev-internet-apps-optimized', '-lns3-dev-internet-optimized', '-lns3-dev-bridge-optimized', '-lns3-dev-mpi-optimized', '-lns3-dev-traffic-control-optimized', '-lns3-dev-network-optimized', '-lns3-dev-stats-optimized', '-lns3-dev-antenna-optimized', '-lns3-dev-core-optimized', '-lrt']
[2205/2689] Linking build/src/applications/examples/ns3-dev-three-gpp-http-example-optimized
09:13:59 runner ['/usr/bin/g++', '-pthread', 'src/applications/examples/three-gpp-http-example.cc.1.o', '-o/home/spencer/Documents/ns-3-allinone/ns-3-dev/build/src/applications/examples/ns3-dev-three-gpp-http-example-optimized', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-Wl,--no-as-needed', '-Llib', '-lns3-dev-applications-optimized', '-lns3-dev-internet-optimized', '-lns3-dev-bridge-optimized', '-lns3-dev-point-to-point-optimized', '-lns3-dev-mpi-optimized', '-lns3-dev-traffic-control-optimized', '-lns3-dev-config-store-optimized', '-lns3-dev-network-optimized', '-lns3-dev-stats-optimized', '-lns3-dev-core-optimized', '-lrt']
/usr/bin/ld: lib/libns3-dev-internet-optimized.so: undefined reference to `PEM_read_bio_RSAPrivateKey'
/usr/bin/ld: lib/libns3-dev-internet-optimized.so: undefined reference to `BIO_new_mem_buf'
collect2: error: ld returned 1 exit status
/usr/bin/ld: lib/libns3-dev-internet-optimized.so: undefined reference to `PEM_read_bio_RSAPrivateKey'
/usr/bin/ld: lib/libns3-dev-internet-optimized.so: undefined reference to `BIO_new_mem_buf'
collect2: error: ld returned 1 exit status
Waf: Leaving directory `/home/spencer/Documents/ns-3-allinone/ns-3-dev/build'
Build failed
-> task in 'three-gpp-http-example' failed with exit status 1:
{task 140153518720280: cxxprogram three-gpp-http-example.cc.1.o -> ns3-dev-three-gpp-http-example-optimized}
['/usr/bin/g++', '-pthread', 'src/applications/examples/three-gpp-http-example.cc.1.o', '-o/home/spencer/Documents/ns-3-allinone/ns-3-dev/build/src/applications/examples/ns3-dev-three-gpp-http-example-optimized', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-Wl,--no-as-needed', '-Llib', '-lns3-dev-applications-optimized', '-lns3-dev-internet-optimized', '-lns3-dev-bridge-optimized', '-lns3-dev-point-to-point-optimized', '-lns3-dev-mpi-optimized', '-lns3-dev-traffic-control-optimized', '-lns3-dev-config-store-optimized', '-lns3-dev-network-optimized', '-lns3-dev-stats-optimized', '-lns3-dev-core-optimized', '-lrt']
-> task in 'aodv' failed with exit status 1:
{task 140153519171176: cxxprogram aodv.cc.1.o -> ns3-dev-aodv-optimized}
['/usr/bin/g++', '-pthread', 'src/aodv/examples/aodv.cc.1.o', '-o/home/spencer/Documents/ns-3-allinone/ns-3-dev/build/src/aodv/examples/ns3-dev-aodv-optimized', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-Wl,--no-as-needed', '-Llib', '-lns3-dev-aodv-optimized', '-lns3-dev-wifi-optimized', '-lns3-dev-spectrum-optimized', '-lns3-dev-propagation-optimized', '-lns3-dev-mobility-optimized', '-lns3-dev-energy-optimized', '-lns3-dev-internet-apps-optimized', '-lns3-dev-internet-optimized', '-lns3-dev-bridge-optimized', '-lns3-dev-mpi-optimized', '-lns3-dev-traffic-control-optimized', '-lns3-dev-network-optimized', '-lns3-dev-stats-optimized', '-lns3-dev-antenna-optimized', '-lns3-dev-core-optimized', '-lrt']
I am using an optimized ns-3-dev build on Ubuntu 19.04.
I am not sure how to make these files not link properly. In fact, I would prefer only rip.cc and its related files build in ns3 and not have to worry about other ns3 modules that I will not be using at this point in time anyways.
Thank you for any help you can give.
Spencer