2009-10-05 65 views
6

我正在嘗試由Richard Stevens在Unix Network Programming中給出的代碼。但我無法獲得編譯的代碼。我需要使用路由套接字來安裝哪些軟件包?

這裏是源代碼。 http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f00/unpv12e/libroute/

我沒有頭文件net/if_dl.h和net/route.h頭文件不包括代碼使用的常量和結構。

+0

你有沒有grepped看看常量是否在不同的頭文件?這可能是因爲它在過去的8年中剛剛移動。 – 2009-10-05 15:07:15

回答

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已經安裝,第一步就沒有必要,我不記得第二個是什麼。另外,我相信這兩個軟件包管理器都可以使用文件名和完整路徑。

希望這可以爲你或其他讀者提供幫助,並且你會得到你的答案!

+0

我在這裏11 – 2009-10-05 16:18:11

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不是BSD風格的路由,只是去../intro和構建實例〜!

0

嘗試從網上覆制一個if_dl.h,並將其放入/ usr/include/net中。 可能是有效的,也許它需要其他庫。 也許我的英語不太好。原諒我。

+2

你應該首先在你的環境中重現問題,並提供一個具體的解決方案,而不是「嘗試/也許」的答案。 StackOverflow不是一個論壇。這是一個問題/答案網站,所以您的答案應在發佈之前完全檢查。 – 2017-03-06 07:53:20

相關問題