以Make和CMake为主,文尾简介w64devkit
一、简介:
1.make和cmake是C语言中常用编译工具。
2.实际使用时,大多数任务一般二选一使用。但除Windows外,建议两者都安装,以备不时之需。
3.make操作更简单,更方便。cmake可自定义的参数更多,功能更复杂、强大。
4.有部分任务指定使用cmake完成,还有少数任务指定使用make完成。
二、安装:
1、Linux:
(1)一般自带make,部分自带cmake。
(2)可以使用sudo apt list查看是否已安装。
(3)下载:
热身-更新软件包: sudo apt update
下载make: sudo apt install make
下载cmake: sudo apt install cmake
【注】具体代码依据自己使用Linux发行版调整。
2、macOS:
(1)一般自带make,不确定是否自带cmake
(2)安装准备:先安装homebrew:https://brew.sh/
两个选项:
(a)如果代码安装,需要安装开发者工具(自动弹窗提示),然后修改host(先ping一下查地址,ping不到就用185.199.109.133,然后百度host修改方法)
(b)软件包安装,注意安装完成后先重启。少数要重新配置环境变量。无解bug待修复。
(3)安装:brew install cmake
3、Windows安装Cmake:
(1)去官网https://cmake.org/download/,依据自己计算机平台(X86或ARM)下载Windows x64 Installer或Windows ARM64 Installer(注意是msi文件),然后按提示安装、重启。
(2)配置环境变量
<1>右键’计算机(Win7/11)’或’此电脑(Win10)’->属性->(向下翻找到)高级系统设置->环境变量
<2>在系统变量(下面的框)中,找到Path并双击,然后新建,输入cmake所在路径\bin(如我的:C:\data\aihub\env\cmake\bin)
<3>然后点确定->应用,关闭窗口即可。
(3)检验安装完成:
重启后进入CMD或PowerShell,输入cmake -version,返回版本号即证明成功安装。
(4)安装编译器:
<1>电脑空间不足就安装MinGW-w64:
https://github.com/skeeto/w64devkit/releases,选最前面的.zip文件下载解压,建议将解压后的文件夹放到其他位置,
然后按照(2)中步骤将bin目录也加上去,不清楚的话看https://zhuanlan.zhihu.com/p/576408483。
不过有一说一,有时候会出一些bug。
<2>更好的方法是用visual studio:https://visualstudio.microsoft.com/zh-hans/,用community免费版就可以。注意下载完安装器后要进入并选择安装,至少勾选左栏“通用Windows平台开发”和“使用C++的桌面开发”、“使用C++Linux开发”以及右栏“使用C++Linux开发”的“可选”当中的 “用于CMake和Linux的Visual C++工具”,大小不到20GB(需要更多开发环境的话会更大),但是稳定。
(5)开始使用
4、Windows安装make:
(1)先在https://github.com/skeeto/w64devkit/releases/上安装w64devkit,一般选择“w64devkit-版本号.zip”文件就可以,然后解压包文件
(2)运行w64devkit.exe,然后直接打开对应目录,make就可以
三、确定安装成功:
(1)Linux或macOS:在终端中运行make —version或cmake --version,返回版本号即证明安装成功
(2)Windows的cmake:在Windows终端(Windows10/11,不一定自带)或CMD、PowerShell(后两者各版本都有)中运行cmake --version,返回版本号即证明安装成功
(3)Windows的make:在w64devkit.exe中运行make --version,返回版本号即证明安装成功
四、运行方式(以llama.cpp为例):
1、make:
cd data/aihub/ai/llama/llama.cpp #这里指待编译项目目录
(1)release版运行:make
(2)debug版运行:make LLAMA_DEBUG=1 #“LLAMA”替换为对应项目名称
2、cmake:
cd data/aihub/ai/llama/llama.cpp #这里指待编译项目目录
(1)法一,适用于release版本:
mkdir build
cd ./build
cmake ..
cmake --build . --config Release
(2)法二,适用于release版本,优化、简单:
cmake -B build
cmake --build build --config Release
(3)法三,适用于debug版本、单配置生成器(Single-config generators):
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
解释:
<1>-B build: 指定构建目录(binary directory)的路径为 ./build。如果 build 目录不存在,cmake 会尝试创建它。构建目录通常不包含源代码,但会包含编译生成的文件(如对象文件、可执行文件、库等)。
<2>-DCMAKE_BUILD_TYPE=Debug: 设置 CMake 的构建类型为 Debug。这通常意味着编译器会生成带有调试信息的代码,这样你就可以使用调试器(如 GDB)来调试你的程序。同时,编译器可能会进行较少的优化,以便更容易地跟踪问题。
<3>法三中默认使用的Unix Makefiles生成器不支持多配置(multi-configuration),因此--config标志对于Unix Makefiles生成器来说无意义,即使标注也同样会被忽略。但是多配置生成器(Multi-config generators)中,需要标好—config参数。
(4)法四,适用于debug版本、多配置生成器(Multi-config generators):(以Xcode为例)
cmake -B build -G “Xcode” #-G参数设置为Xcode或Visual Studio等编译工具
cmake --build build --config Debug
五、w64devkit
1、简介:w64devkit 仅适用于Windows平台,是一个 Dockerfile,它用于从源代码构建一个小的、便携的开发套件,用于在 x64 架构的 Windows 上创建 C 和 C++ 应用程序。也可以在Windows上使用(类似)Unix的命令。
2、其中包含了以下工具:
(1)MinGW-w64 GCC:编译器、链接器和汇编器。这是 GNU Compiler Collection(GCC)的一个版本,专门用于 Windows 平台上的 x86-64 架构。
(2)GDB:调试器。GDB 是 GNU 项目中的调试器,用于在源代码级别调试程序。
(3)GNU Make:标准的构建工具。Make 用于自动化编译、链接等构建过程。
(4)busybox-w32:标准的 Unix 工具集,包括 sh(shell)。BusyBox 是一个单一的可执行文件,它提供了许多 Unix 命令行工具的功能。
(5)Vim:功能强大的文本编辑器。Vim 是一种高效且高度可配置的文本编辑器,尤其适合程序员使用。
(6)Universal Ctags:源代码导航工具。Ctags 用于生成源代码的标签文件,这些文件可以被多种文本编辑器和 IDE 使用,以支持源代码导航。
(7)NASM:x86 汇编器。NASM 是一个为 x86 架构设计的汇编器,支持多种输出格式。
(8)Cppcheck:静态代码分析工具。Cppcheck 是一个用于 C/C++ 代码的静态分析工具,它可以帮助发现代码中的潜在问题。
此外,这个工具链还包括了对 pthreads(POSIX 线程)、C++11 线程和 OpenMP 的支持。所有的运行时组件都是静态的。
3、备注:虽然 Docker/Podman 并不是使用这个开发套件所必需的,但它们提供了一个可靠、干净的环境来构建这个工具套件本身。这意味着你可以使用 Docker 或 Podman 来创建一个隔离的环境,在这个环境中构建和使用 w64devkit,以确保你的构建过程不会受到系统其他部分的影响。
4、安装:
(1)先在https://github.com/skeeto/w64devkit/releases/上安装w64devkit,一般选择“w64devkit-版本号.zip”文件就可以,然后解压包文件
(2)建议将解压后的文件放在其他位置,建议是放在稳定的目录或专门存放开发者工具的文件夹
(3)添加环境变量:set PATH=C:\data\aihub\env\w64devkit\bin;%PATH%
其中“C:\data\aihub\env\w64devkit\”替换为自己存放w64devkit文件夹的目录
5、使用:
(1)快速使用:直接双击4.(1)步骤中解压后文件中的w64devkit.exe,即可使用
(2)稳定使用:执行4中所有步骤,然后打开CMD或Powershell,输入sh -l进入unix交互模式。
6、注意:
w64devkit仅给予unix内核的基础功能,不支持apt、homebrew等给予Linux或macOS的特殊功能。
7、开源项目地址:https://github.com/skeeto/w64devkit/
编辑:AimoneAndex
由于本人才疏学浅,文章内容可能有不足,如果发现请及时指出,谢谢配合!不定期更新,敬请期待! 有问题可以在评论区留言交流!
我是艾萌,我们下期见!