使用VS2017/VSCode编译libdwarf工程

Cmake如何选择Vs2017和MinGw64 GCC编译器,编译libdwarf库

使用VS2017/VSCode编译libdwarf工程

VS2017支持Cmake编译,我将使用VS2017编译libdwarf库,在网上查了好多与dwarf相关的文章,在GitHub上可以轻易下载到libdwarf的源码,但是不知道如何使用,libdwarf库为开源代码,符合LGPL。

下载libdwarf库

打开github.com直接搜索libdwarf,排行第一的就是,地址https://github.com/avast/libdwarf,其实源码都一样,这个代码是我感觉比较干净的,文件结构如下:
在这里插入图片描述文件中,其实包含两个库源码文件,一个是libdwarf,也就是我们需要的,一个是libelf库,这是libdwarf需要的。

安装需要的软件VSCODE、MinGW64、Cmake、VS2017

1、安装VSCODE、VS2017,比较简单
2、下载安装MinGW64、Cmake时,如果下载的是免安装版本,需要注意把可执行文件的路径加到系统变量Path中,如
Cmake目录D:\Program Files\CMake\bin;
MinGW64目录D:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin
添加这两个目录是为了让系统获取cmake.exe、gcc.exe(g++.exe、make.exe)等程序的路径

VSCODE编译工程

1、用vscode打开文件夹,并打开命令终端
在这里插入图片描述
2、在工程下新建build文件夹
输入cd ./build进入build目录下
2、在命令终端中输入如下命令后,回车
cmake.exe --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=D:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=D:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\g++.exe -He:/Desktop/libdwarf-master -Be:/Desktop/libdwarf-master/build -G "MinGW Makefiles"
在这里插入图片描述
结果如下
在这里插入图片描述
3、输入make,进行编译
在这里插入图片描述
查看build目录下,生成了对应的库文件,如下
在这里插入图片描述

VS2017中编译工程

1、打开VS2017,快速启动处,输入cmake,选择文件打开cmakelist
在这里插入图片描述
选择源码文件夹下的CMakeLists.txt文件后,工程自动导入
2、在菜单栏处选择Cmake->全部重新生成,在工程下即可生成对应的库文件,生成的库文件的路径,在vs2017的输出窗口log中可以查到。
3、查看一下VS2017的cmake命令,如下
f:\vs2017_ide\common7\ide\commonextensions\microsoft\cmake\CMake\bin\cmake.exe -G “Ninja” -DCMAKE_INSTALL_PREFIX:PATH=“C:\Users\LCH\CMakeBuilds\45f6fcce-c0cf-843d-be1e-bace30bc47e8\install\x64-Debug (默认值)” -DCMAKE_CXX_COMPILER=“F:/VS2017_IDE/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64/cl.exe” -DCMAKE_C_COMPILER=“F:/VS2017_IDE/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64/cl.exe” -DCMAKE_BUILD_TYPE=“Debug” -DCMAKE_MAKE_PROGRAM=“f:\vs2017_ide\common7\ide\commonextensions\microsoft\cmake\Ninja\ninja.exe” “E:\Desktop\vs2017_pro\libdwarf-master”
4、工程导入后,cmake选项卡中点击重新生成,生成对应的lib、dll
在这里插入图片描述
retdec-libdwarf.lib
retdec-libdwarf.dll
retdec-libelf.dll
retdec-libelf.lib
5、但是生成的库在别的工程中调用,调用时可能会是debug、也可能是release,那么最好一次生成好
一下可以设置是生成release还是生成debug
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值