2009-10-05 17 views
6

Próbuję kod podany w Unix Network Programming przez Richard Stevens. ale nie mogę uzyskać kodu do kompilacji.Jaki pakiet muszę zainstalować, aby korzystać z gniazd routingu?

tutaj jest kod źródłowy. http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f00/unpv12e/libroute/

Nie mam pliku nagłówkowego net/if_dl.h, a plik nagłówkowy net/route.h nie zawiera stałych i struktur, z których korzysta kod.

+0

Czy poszedłeś sprawdzić, czy stałe są w innym pliku nagłówkowym? Być może właśnie przeprowadziła się w ciągu ostatnich 8 lat. –

Odpowiedz

4

To jest interfejs API specyficzny dla systemu BSD, a system Linux go nie obsługuje. Odpowiednia funkcjonalność (nie jest zgodna ze źródłem) jest dostarczana przez rodzinę gniazd sieciowych . "man 7 netlink" powinien zacząć, ale prawdopodobnie będziesz musiał wykonać pewne prace związane z portowaniem.

3

Nie jestem na komputerze, na którym mogę to teraz zrobić, ale może nadal mogę pomóc. Jeśli Twoja dystrybucja używa yum (np RHEL):

yum provides if_dl.h 

lub jeśli używasz apt (np Ubuntu/Debiana):

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

jeśli apt-file jest już zainstalowane, pierwszym krokiem nie będzie konieczne , i nie pamiętam na pewno, czy drugi jest. Ponadto wierzę, że oba menedżery pakietów działają zarówno z nazwą pliku, jak iz pełną ścieżką.

Mam nadzieję, że to zadziała dla Ciebie lub kogoś innego czytającego to, a otrzymasz odpowiedź!

+0

Jestem na suse 11 –

5

Pamiętaj, nie musisz zrobić w tym folderze "libroute"

Zobacz dokument:

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 nie jest w stylu BSD routing, wystarczy przejść do ../intro i budować przykłady ~!

0

spróbuj skopiować plik if_dl.h z sieci i umieść go w/usr/include/net. może być działa i może potrzebuje innych bibliotek. Może mój angielski nie jest tak dobry. Wybacz mi.

+2

Powinieneś najpierw odtworzyć problem w swoim środowisku i dostarczyć konkretne rozwiązanie, zamiast odpowiedzi "spróbuj/może". StackOverflow nie jest forum dyskusyjnym. Jest to strona z pytaniami i odpowiedziami, więc twoja odpowiedź powinna być w pełni sprawdzona przed wysłaniem. –

Powiązane problemy