My Own Style

반응형
  • 요구사항 : 임베디드 리눅스 장비에서 네트워크 패킷을 떠야하는 경우가 발생. tcpdump 를 이용하기 위해 cross compile 된 바이너리 필요

  • 작업내용
    • tcpdump 공식 사이트 ( https://www.tcpdump.org/ ) 접속

    • latest releases 된 tcpdump 와 libpcap 를 다운받음
      (18.12.14 기준 최신 tcpdump Version: 4.9.2, libpcap  Version: 1.9.0)
      • 유닉스 계열 운영체제들은 libpcap 라이브러리에 pcap 을 포함함. 
        tcpdump 는 pcap API를 사용하므로 dependency 가 있음. 따라서 libpcap 을 선행 빌드 필요

    • 크로스 컴파일용 폴더와 크로스 컴파일 루트 경로를 따로 지정하여 작업진행
      • /home/$USER/cross_compile_src, /home/$USER/cross_root 경로를 이용
      • /home/$USER/cross_compile_src 경로에 tcpdump-4.9.2.tar.gzlibpcap-1.9.0.tar.gz 위치 시킴
      • 압축해제 
      • $ tar -xzvf libpcap-1.9.0.tar.gz 
        $ tar -xzvf tcpdump-4.9.2.tar.gz
      • libpcap 먼저 크로스 컴파일 진행 (ex. 크로스 컴파일러 : arm-hisiv400-linux-gcc 가정)
      • $ cd libpcap-1.9.0 $ CC=arm-hisiv400-linux-gcc ./configure --prefix=/home/$USER/cross_root/ --host=i686 $ make $ make install

      • libtcpdump 크로스 컴파일 진행 (ex. 크로스 컴파일러 : arm-hisiv400-linux-gcc 가정)
      • $ cd tcpdump-4.9.2 $ CC=arm-hisiv400-linux-gcc ./configure --prefix=/home/$USER/cross_root/ --host=i686 $ make $ make install

      • prefix 를  /home/$USER/cross_root  지정하였기 때문에 해당 디렉토리로 이동하여 크로스 빌드된 파일들을 찾아보면 tcpdump 바이너리는 /home/$USER/cross_root/sbin 에 생성(tcpdump), libpcap 라이브러리는 /home/$USER/cross_root/lib 에 생성됨(libpcap.so.1.9.0).

  • 정상동작 확인 테스트
    • 해당 두 파일을 usb 에 복사

    • 임베디드 장비 usb 연결

    • df [OPTION]...[FILE]... 명령 이용하여 usb 마운트 위치로 이동

    • $ export LD_LIBRARY_PATH=$PWD

    • tcpdump 바이너리 실행 및 결과 확인

      • ex ) ./tcpdump -i eth0 -vvvw test.pcap host 192.168.10.4


반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band