본문 바로가기
개발

ldd Source

by 철권 2016. 7. 7.
728x90

소스 위치
https://github.com/martinezjavier/ldd3

리눅스 바로 다운
#wget https://github.com/martinezjavier/ldd3/archive/master.zip
#master.zip

zip이 없는 경우
#apt-get install unzip
#unzip master.zip 
특정위치에 풀기
#unzip master.zip -d ./ldd3

#make

.. 오류

추가
vi /etc/networks

snullnet0       192.168.0.0
snullnet1       192.168.1.0


#vi /etc/hosts:
192.168.0.1   local0
192.168.0.2   remote0
192.168.1.2   local1
192.168.1.1   remote1

You may need to add the netmask 255.255.255.0 parameter if the address range chosen is not a class C range.

#ifconfig sn0 local0 #ifconfig sn1 local1

#morgana% ping -c 2 remote0


커널 버전이 3.10 보다 크면  오류가 있는것 같습니다.


네트워크 드바이스 드라이버 등록

alloc_netdev



network device 를 등록할때 커널의 alloc_netdev 함수를 호출하게 됩니다.
이때 장비의 이름을 eth%d 와 같은 형식으로 넘겨주게 됩니다.
eth%d가 eth0, eth1등으로 reslove 되는 것은 언제일까요?
드라이버가 로딩되면 드라이버의 등록 함수(attach)에서 dev_alloc_name 함수를 이용해서 이름을 완성하게 됩니다.
따라서 디바이스 드라이버가 등록 되기전에 dev->name 을 사용하면
eth0, eth1이 아니라 eth%d 로 proc 등의 디렉토리를 만들게 되어 에러의 원인이 됩니다.





아래 오류는 해결

snull/snull.c:726:18: error: ‘alloc_netdev’ undeclared (first use in this function)
  snull_devs[0] = alloc_netdev(sizeof(struct snull_priv), "sn%d", NET_NAME_UNKNOWN,

아래로 수정하면 됩니다.

NET_NAME_UNKNOWN 제거
dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);
to 
dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_UNKNOWN, VNetNetIfSetup);


728x90
반응형

'개발' 카테고리의 다른 글

Tomcat rotatelogs 만들기  (0) 2018.07.12
linux Apache 설치 및 환경 설정 cgi 연동  (0) 2018.07.08
java.security.SecureRandom  (0) 2017.12.15
gdb 사용을 위한 core 파일 남기기  (0) 2016.07.04
안드로이드 ADT 설치  (0) 2016.07.02