我正在嘗試由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頭文件不包括代碼使用的常量和結構。
我正在嘗試由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頭文件不包括代碼使用的常量和結構。
這是一個特定於BSD的API,linux不支持它。 等效功能(非源兼容)由 netlink套接字系列提供。 「man 7 netlink」應該讓你開始,但 你可能需要做一些移植工作。
我不在一臺機器上,現在我可以這樣做,但也許我仍然可以幫忙。如果您的版本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
已經安裝,第一步就沒有必要,我不記得第二個是什麼。另外,我相信這兩個軟件包管理器都可以使用文件名和完整路徑。
希望這可以爲你或其他讀者提供幫助,並且你會得到你的答案!
我在這裏11 – 2009-10-05 16:18:11
請注意,您不需要在該文件夾「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和構建實例〜!
嘗試從網上覆制一個if_dl.h,並將其放入/ usr/include/net中。 可能是有效的,也許它需要其他庫。 也許我的英語不太好。原諒我。
你應該首先在你的環境中重現問題,並提供一個具體的解決方案,而不是「嘗試/也許」的答案。 StackOverflow不是一個論壇。這是一個問題/答案網站,所以您的答案應在發佈之前完全檢查。 – 2017-03-06 07:53:20
你有沒有grepped看看常量是否在不同的頭文件?這可能是因爲它在過去的8年中剛剛移動。 – 2009-10-05 15:07:15