kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

admin 2023年11月3日09:00:44评论16 views字数 2401阅读8分0秒阅读模式

    一个踩坑过程的学习笔记,也是一篇总结、一段历练。

    当初以为很简单,结果让我焦头烂额;历经人为设坑、胡思乱搞、各种折腾,几度中断,想过放弃,但不甘心;摆平急功近利心态,理清思路,积累经验,利用碎片时间,缓慢成长,终得此文。写出来,分享大家,为你助力。

思来,还是水平太low了,让大家见笑。

    本来想分开写两篇的,分别是kali下的cmake ELF程序,以及 Windows下WSL(Ubuntu)+Vs2022编译ELF程序。可能稍微长点,但主要是考虑到两者有很多相通的点,故现在合成一篇。

===========================================

一、kali下的cmake ELF程序

(一)起因

    起因是编译一个bddisasm的工具(https://github.com/bitdefender/bddisasm)。windows下的编译一切顺利。

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

但,里面有个disasmtool_lixlinux的程序,

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

我就想编译成linux ELF程序。

(二)折腾开始

    这就是折腾的开始。各位可以在不看我下面的过程前,自已走一遍。你很顺利,说明你懂。跟我一样的,说明不太懂这个,有必要接下来看看。

    刚开始时,我是用vs2022搭配WSL来搞的,不顺利,没走下去,应该是我不懂的原因。后来还是在kali下完成了过程,下面就用这个来讲下过程,WSL里编译下一篇讲讲

    事后总结(多么痛的领悟):一切的灾难都是因为不了解CMakeLists.txt这个东东,没有理解disasmtool_lix这个目录和上层目录bddisasm之间的关系,以为两者是可以割裂开的;没有弄懂这三者的关系,单纯的只想着将disasmtool这个编译成ELF文件,而没有将bddisasm和bdshemu编译成linux下的库。

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

各种乱捣鼓,头破血流。

(三)正确过程

下面记录正确的过程:

1、安装cmake:apt-get install cmake

2、安装vcpkg:apt-get install vcpkg

3、安装pkg-config:apt-get install pkg-config

4、进入vcpkg目录

5、./vcpkg install bddisasm

6、找到CMakeLists.txt,有很多,我们要的disasmtool_lix下的

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

进入到buildtrees/bddisasm/src/v....clean目录下

7、如下命令编译:

mkdir build

cmake -B build .

出现一个报错:

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

错误提示好几排,我当时的重点放在黄色框中的RapidJSONConfig.cmakerapidjson-config.cmake这两个文件上,到处找这两个文件。后来才反应过来,不应该这样找,应该是找RapidJSON这个整库。

8、在github上找到RapidJSON,git clone下来后,

mkdir build

cmake -B build .

cmake --build build

然后安装,

cmake --build build --target install

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

说明安装成功了。

9、回到主题上

cmake -B build .

cmake --build build

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

显示编译成功了。

运行下:

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

成功完成!

(四)最后

其实,我们是应该来读CMakeLists.txt这个文件内容的,里面详细地记录了。尤其是在:

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

这里的find_package(bddisasm)(RapidJSON),让我折腾了很久,然后又回过头来读作者的原文介绍,才理解了可能原因。

说一千道一万,还是“难者不会,会者不难”。

===========================================

二、WindowsWSL(Ubuntu)+Vs2022编译ELF程序

(一)安装WSL

1、在网上下载个WSL的安装程序;

2、wsl启动,然后wsl --list查看,并用wsl --install 默认安装Ubuntu;

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

3、git clone https://github.com/microsoft/vcpkg.git

4、cd vcpkg

运行 apt-get install curl zip unzip tar

运行  bootstrap-vcpkg.sh

这时,运行./vcpkg成功。

(二)Vs2022编译过程:

1、安装cmake:apt-get install cmake

2、安装pkg-config:apt-get install pkg-config

3、进入vcpkg目录

4github上找到RapidJSON,git clone下来后

mkdir build

cmake -B build .

cmake --build build

然后安装,

cmake --build build --target install

安装成功 RapidJSON

5、进入到buildtrees/bddisasm/src/v....clean目录下

mkdir build

cmake -B build .

cmake --build build

cmake --build build --target install

安装成功 Bddisasm

6、在Vs2022中编译,

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

选择WSL,以及WSL-GCC-Debug编译器

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

7、重新生成CMake

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

显示编译成功。

kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录


三、总结

   上面利用两种方法:分别是 Linux中利用Cmake来编译ELF程序,以及Windows中配置WSL的Ubuntu利用Cmake+Vs2022来编译ELF程序,过程不是一蹴而就,有点曲折而复杂。

    通过两种方法的对比,逐渐理清了思路,在排错的过程中有了一些深刻的认识,虽然想过放弃,但坚持下来后,感觉收获挺大,特分享给大家,希望喜欢。

原文始发于微信公众号(MicroPest):kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月3日09:00:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   kali+cmake编译ELF程序 和 Windows+WSL(Ubuntu)+Vs2022编译ELF程序的踩坑记录http://cn-sec.com/archives/2170796.html

发表评论

匿名网友 填写信息