2009-10-05 7 views
6

私はRichard StevensのUnix Network Programmingで与えられたコードを試しています。コンパイルするコードを取得することができません。ルーティングソケットを使用するためにどのパッケージをインストールする必要がありますか?

ここはソースコードです。 http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f00/unpv12e/libroute/

私はヘッダファイルネット/ if_dl.hおよびネット/ route.hヘッダファイルを持っていないコードが使用する定数や構造が含まれていません。

+0

定数が別のヘッダーファイルに含まれているかどうか確認しましたか?過去8年間に移動したばかりかもしれません。 –

答えて

4

これはBSD固有のAPIであり、linuxはサポートしていません。 相当の機能(ソースと互換性がありません)は、 netlinkソケットファミリによって提供されています。 "man 7 netlink"を起動する必要がありますが、 では移植作業を行う必要があります。

3

私は今これを行うことができるマシンではないが、おそらく私はまだ助けることができる。お使いのディストリビューションはyumを使用している場合(例えばRHEL):

yum provides if_dl.h 

それとも、apt(例えばUbuntuの/ Debianを使用)を使用する場合:

sudo apt-get install apt-file 
sudo apt-file update 
apt-file search if_dl.h 

apt-fileがすでにインストールされている場合は、最初のステップは必要ではないだろう、私は2番目の場合は確かに覚えていない。また、私は両方のパッケージマネージャーがファイル名とフルパスの両方で動作すると信じています。

これはあなたまたは他の誰かがこれを読んでいればうまくいけば、あなたはあなたの答えを得るでしょう!

+0

私はsuseにいます。 –

5

注意してください、あなたはそのフォルダ「libroute」にする必要はありません

は、ドキュメントを参照してください:

cd ../libroute # only if your system supports 4.4BSD style routing sockets 
make   # only if your system supports 4.4BSD style routing sockets 

cd ../libxti # only if your system supports XTI 
make   # only if your system supports XTI 

Linuxはちょうど../introおよび構築するために行く、BSDスタイルのルーティングではありません例〜!

0

netからif_dl.hをコピーして、/ usr/include/netに入れてみます。 それは動作するかもしれませんし、多分それは他のlibsを必要とします。 多分私の英語はあまり良くありません。私を許して。

+2

まず、環境内の問題を再現し、 "try/maybe"の代わりに具体的な解決策を提示する必要があります。 StackOverflowはディスカッションフォーラムではありません。それは質問/回答サイトなので、あなたの答えは投稿前に完全にチェックされるべきです。 –

関連する問題