1

mpolsrでパッチ を適用ns-2.29してコンパイルしようとしています。次のエラーが表示されます。Linux Mintgcc-4.7

trace/cmu-trace.o: In function `MPOLSR_pkt::access(Packet const*)':
cmu-trace.cc:(.text._ZN10MPOLSR_pkt6accessEPK6Packet[_ZN10MPOLSR_pkt6accessEPK6Packet]+0x7): undefined reference to `MPOLSR_pkt::offset_'
collect2: error: ld returned 1 exit status
make: *** [ns] Error 1

cmu-trace.ccファイルに正しいヘッダーが含まれていることがわかりました。オフセット関数の定義を含む cc ファイルを追加しようとしましたが、成功しませんでした。どんな助けでも大歓迎です。

を使用してns-2.29_mpolsr.rarいます。

4

1 に答える 1

1

ns-2.29_mpolsr.rarファイルは壊れており、の作成者はを変更mpolsrしただけで、は変更してMakefileいませんMakefile.in。したがって、を実行する./configureと、の変更が消去されますMakefile

コンパイルするために必要な手順は次のとおりです。

1.:を編集しMakefile.inます

olsrディレクトリとmpolsrINCLUDES変数に追加します。次のようになります。

INCLUDES = \
        -I. \
        @V_INCLUDES@ \
        -I./tcp -I./sctp -I./common -I./link -I./queue \
        -I./adc -I./apps -I./mac -I./mobile -I./trace \
        -I./routing -I./tools -I./classifier -I./mcast \
        -I./diffusion3/lib/main -I./diffusion3/lib \
        -I./diffusion3/lib/nr -I./diffusion3/ns \
        -I./diffusion3/filter_core -I./asim/ -I./qs \
        -I./diffserv -I./satellite \
        -I./wpan -I./olsr -I./mpolsr

mpolsrのオブジェクトファイルをOBJ_CC変数に追加します。次のような行を追加する必要があります(真ん中の行が新しい行です)。

        olsr/OLSR.o olsr/OLSR_state.o olsr/OLSR_rtable.o olsr/OLSR_printer.o \
        mpolsr/MPOLSR.o mpolsr/MPOLSR_state.o mpolsr/MPOLSR_m_rtable.o mpolsr/MPOLSR_printer.o mpolsr/MPOLSR_rtable.o\
        common/ns-process.o \

新しいバージョンのを使用している場合は、ディレクティブgccも追加する必要があり-fpermissiveます。そうしないと、コンパイルに失敗します。これを行うには、.cc.o:ディレクティブを次のように変更します。

.cc.o:
        @rm -f $@
        $(CPP) -fpermissive -c $(CFLAGS) $(INCLUDES) -o $@ $*.cc

2.configureスクリプトを実行可能にします

ns-2.29_mpolsrディレクトリで、を実行します

chmod +x configure

3.構成スクリプトを実行します

nsのallinoneバージョンに応じて、次のように実行します。

./configure --with-otcl=$PWD/../otcl-1.13/ --with-tclcl=$PWD/../tclcl-1.19/

上記のバージョン番号はns-allinone-2.34

4.作る

同じディレクトリで実行

make -j100

上記をで確認しましたgcc-4.6.3が、で動作するはずgcc-4.7です。

于 2013-02-03T12:20:04.557 に答える