• Windows下编译Wireshark 1.8.x


     

     

    参考: http://www.wireshark.org/docs/wsdg_html_chunked/ChSetupWin32.html

     

    • 版本:  Wireshark 1.8.4/1.8.6
    • 系统:  Windows 7 Ultimate 32bit/64bit
    • 编译器: MSVC++ 2005 / 2010 (这个版本不支持MSVC++ 2012编译)

    编译步骤

    1. 下载源代码

      可以到这里下载官方release代码 http://www.wireshark.org/download/src/, 或者根据http://www.wireshark.org/develop.html 的提示,使用SVN等工具从代码仓库获得代码。

    2. 安装Cygwin

       http://www.cygwin.com/setup.exe 下载Cygwin的安装程序,执行在线安装,后面将会看到,如果使用旧的Cygwin版本,可能会导致错误。安装时根据提示,选择以下包:

      • Archive/unzip
      • *Archive/zip (only needed if you intend to build the U3 package)
      • Devel/bison
      • Devel/flex
      • *Devel/subversion (optional - see discussion about using Subversion below)
      • Interpreters/perl
      • Utils/patch
      • Web/wget

      假设其安装到D:\dev\Cygwin。

    3. 安装Python 2.7

      没什么说的,下载后安装即可,不过python的官网被和谐了。假设安装在C:\Python27目录。

    4. 修改config.nmake文件

      此文件位于源代码根目录下。可视情况修改以下定义:
      VERSION_EXTRA, 加入自定义版本号, 如"-myversion".
      WIRESHARK_TARGET_PLATFORM
      WIRESHARK_LIBS, 设置编译wireshark所需的库所在的目录. Wireshark1.8.6改为:WIRESHARK_LIB_DIR,这里不可以用相对目录,必须用绝对目录。设置后无效,setup时程序还是把库下载到了C:\wireshark-win32-libs-1.8
      PROGRAM_FILES, 设置本机程序安装目录, 默认即可.
      MSVC_VARIANT, 只将值为MSVC2005的那一行前的#去掉, 其余MSVC_VARIANT项行首全部加上#注释掉.
      *GTK1_DIR, GTK2_DIR, 如果只想生成好看的GTK2 GUI的程序, 用#注释掉GTK1_DIR行.此设置在本版本中已废弃,只采用GTK2.
      CYGWIN_PATH, 将其设置为Cygwin的bin目录.如D:\dev\Cygwin\bin
      *PYTHON及其后的PATH, 将其修改为本机python.exe和其安装目录的位置.此版本会自动检测Python,不需要管
      MAKENSIS, 如果你没有安装NSIS安装程序制作工具, 用#注释掉此行.
      HHC_DIR, 如果没有安装HTML Help Workshop(chm帮助文件制作工具), 注释掉此行.
      INSTALL_DIR=debug, 编译后wireshark的存放目录,相对于源代码主目录而言,应设置成源代码目录的子目录,否则会出错。
      *INSTALL1_DIR, 如果不想生成GTK1程序, 用#注释掉此行.此设置在本版本中已废弃
      HHC_EXE, 如果没有安装HTML Help Workshop(chm帮助文件制作工具), 注释掉此行.

      以DEBUG方式编译wireshark: (http://wiki.wireshark.org/Development/Tips)
      # Linker flags
      # /DEBUG generate debug info
      LOCAL_LDFLAGS=/DEBUG

    5. 检查编译工具是否就绪

      为了在命令行使用VC++编译工具,需要在编译前执行VC++自带的环境设置脚本,这个脚本在 C:\Program Files\Microsoft Visual Studio 8\VC\bin 或 C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat。前者调用的是后者。 可以写一个bat文件,内容如下,每次编译前执行这个文件,以构建VC++编译工具链运行环境。

      @echo off
      
      set PATH=%PATH%:.
      set PATH=%PATH%;C:\cygwin\bin
      
      echo 设置 Visual Studio environment...
      "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
      
      title Command Prompt (MSVC++ 2005)

      VC++ 2010:

      @echo off
      
      set PATH=%PATH%:.
      set PATH=%PATH%;C:\cygwin\bin
      
      echo 设置 Visual Studio environment...
      "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"
      
      title Command Prompt (MSVC++ 2010)

      运行以上脚本之后,进入wireshark源码主目录,运行

      nmake -f Makefile.nmake verify_tools

      如果所需工具都就绪,则输出像下面这样:

      --------------------------------------------------------------------------------
      E:\dev\wireshark-1.8.4>nmake -f Makefile.nmake verify_tools
      
      Microsoft (R) 程序维护实用工具 8.00.50727.762 版
      版权所有 (C) Microsoft Corporation。保留所有权利。
      
      Checking for required applications:
        cl: /cygdrive/c/Program Files/Microsoft Visual Studio 8/VC/BIN/cl
        link: /cygdrive/c/Program Files/Microsoft Visual Studio 8/VC/BIN/link
        nmake: /cygdrive/c/Program Files/Microsoft Visual Studio 8/VC/BIN/nmake
      
        mt: /cygdrive/c/Program Files/Microsoft Visual Studio 8/VC/BIN/mt
        bash: /usr/bin/bash
        bison: /usr/bin/bison
        flex: /usr/bin/flex
        env: /usr/bin/env
        grep: /usr/bin/grep
        /usr/bin/find: /usr/bin/find
        peflags: /usr/bin/peflags
        perl: /usr/bin/perl
        C:\Python27\python.exe: /cygdrive/c/Python27/python.exe
        sed: /usr/bin/sed
        unzip: /usr/bin/unzip
        wget: /usr/bin/wget
      --------------------------------------------------------------------------------
    6. 安装依赖库

      nmake -f Makefile.nmake setup
    7. 开始编译

      nmake -f Makefile.nmake distclean
      nmake -f Makefile.nmake all
    
    

    问题及解决

    在verify tool时出错:不能在lib目录找到current_tag.txt。 解决:手动创建此文件,并根据提示写上内容,一般是一个日期字符串,如2012-05-30

    在verify tool时出错:Can't find: peflags。 ERROR: These application(s) are either not installed or simply can't be found in the current PATH: ,然后跟一堆文本。 解决:安装最新的Cygwin。


    编译时出错: unix2dos: ..wireshark-debug/help/*.txt: No such file or directory unix2dos: Skipping ..wireshark-debug/help/*.txt, not a regular file. NMAKE : fatal error U1077: “d:\dev\cygwin\bin\u2d.EXE”: 返回代码“0x2” Stop.
    解决:是由于之前把INSTALL_DIR设置成wireshark源代码目录的同级目录所致,把它设为源代码目录的子目录后问题消失。

     

    Visual C++ 2005自写程序调用编译后的wireshark dll问题

    自已写的debug版程序,调用libwireshrak.dll,调试时报runtime error R6034。以下文章指出这是由于编译wireshark时所用的CRT和当前debug程序的CRT不一样,造成同时有两个版本的CRT DLL被加载,所以出错。可以在编译wireshark时在config.nmake文件处做以下改动(添加,后面的不动),强制以debug库编译:

    LOCAL_LDFLAGS=/DEBUG /DEFAULTLIB:msvcrtd.lib /NODEFAULTLIB:msvcrt.lib

    Visual C++ 2010编译时错误: LNK1123 failure during conversion to COFF, file invalid or corrupt

    这是由于先安装Visual Studio 2012, 后安装Visual Studio 2010造成的,用VS2012的cvtres.exe替换掉VS2010的即可。这个文件在 \VC\bin和\VC\bin\amd64目录下。参考:http://stackoverflow.com/questions/12267158/failure-during-conversion-to-coff-file-invalid-or-corrupt

  • 相关阅读:
    linux离线安装nodejs ,配置环境,离线配置全局包
    前端项目路由使用browserHistory不能刷新,页面刷新错误,
    手机uc浏览器打不开本地网页,网页一片空白
    display:flex兼容性,
    react生产环境样式丢失问题 在浏览器中看到标签有类名,但没有样式
    redux使用redux-thunk中间件处理异步状态管理请求
    配置Redux DevTools
    flex-grow属性在文本过长时会超出父窗体长度
    react配置代理,解决跨域
    react修改状态
  • 原文地址:https://www.cnblogs.com/zzqcn/p/3039110.html
Copyright © 2020-2023  润新知