易语言伪原创源码(如何写或读代码就可以编译它?(上))

优采云 发布时间: 2022-01-27 02:06

  易语言伪原创源码(如何写或读代码就可以编译它?(上))

  您不需要知道如何编写或阅读代码来编译它。

  

  安装软件的方法有很多,但开源为您提供了其他任何地方都没有的选项:您可以自己编译代码。编译源代码的经典三步过程是:

  $ ./configure

$ make

$ sudo make install

  多亏了这些命令,您可能会惊讶地发现,您不需要知道如何编写代码,甚至不需要知道如何阅读代码来编译它。

  安装用于构建软件的命令

  由于这是您第一次编译,因此有一个一次性准备步骤,即安装用于构建软件的命令。具体来说,您需要一个编译器。编译器(例如 GCC 或 LLVM)可以像这样转换源代码:

  #include

  它变成了机器语言,即 CPU 用来处理信息的指令。您可以查看机器代码,但这对您没有任何意义(除非您是 CPU)。

  您可以使用包管理器安装 GNU Compiler 采集 (GCC) 和 LLVM 编译器,以及在 Fedora、CentOS、Mageia 和类似发行版上进行编译的其他基本命令:

  $ sudo dnf install @development clang

  在 Debian、Elementary、Mint 和类似的发行版上,命令如下:

  $ sudo apt install build-essential clang

  设置系统后,每次编译软件时都会重复几个任务:

  下载源代码 展开源代码的归档文件 编译

  你已经拥有了所有你需要的命令,所以现在你需要一些软件来编译。

  1、下载源代码

  获取应用程序的源代码与获取任何可下载的软件相同。您必须访问 网站 或代码管理 网站,例如 GitLab、SourceForge 或 GitHub。通常,开源软件既有进行中的(“当前”或“夜间”)构建,也有打包的“稳定”版本。如果可能,请使用稳定版本,除非您有理由相信,或者对代码有足够的了解,以便在出现故障时能够修复它。术语“稳定”表示代码已经过测试,并且应用程序的程序员对代码有足够的信心将其打包成 .zip 或 .tar 存档,给它一个官方编号,有时是一个发布名称,然后可供一般非程序员公众下载。

  在本练习中,我使用的是开源(GPLv2)ASCII 地牢猎人游戏)Angband。它是一个简单的应用程序,就像您需要考虑自己编译软件一样复杂。

  从 网站 下载它的源代码。

  2、展开源代码存档

  源代码通常作为存档交付,因为源代码通常由多个文件组成。在与它交互之前,您必须解压缩它,无论是 tarball、zip 文件、7z 文件还是完全其他的文件。

  $ tar --extract --file Angband-x.y.z.tar.gz

  解压缩后,将目录更改为解压缩后的目录并查看。目录的顶层通常有一个 README 文件。该文件通常收录有关编译代码所需执行的操作的说明。自述文件通常收录有关代码这些重要方面的信息:

  如果 README 文件不收录此信息,请考虑向开发人员提交错误报告。您不是唯一需要介绍源代码的人。不管他们多么有经验,每个人都会对从未见过的源代码感到陌生,文档很重要!

  Angband 的维护人员提供了描述如何编译代码的在线说明的链接。该文档还描述了您需要安装的其他软件,尽管它没有具体说明。网站 表示,“有几种不同的可选构建前端(GCU、SDL、SDL2 和 X11),您可以使用 --enable-sdl、--disable-x11 等参数)配置。 " 这对你来说似乎是一本天书,但你已经习惯了经常编译代码。无论您是否了解 X11 或 SDL2 是什么,在经过数月的定期编译代码需求后,您经常会看到它们。大多数软件都需要其他库,因为它们是建立在其他技术之上的,您会对此感到满意。不过,在这种情况下,

  3、编译代码

  构建代码的典型步骤是:

  $ ./configure

$ make

$ sudo make install

  这些是使用 Autotools 构建的项目的步骤,Autotools 是一个为标准化源代码交付方式而创建的框架。但是,还有一些其他框架(如 Cmake)需要不同的步骤。当项目不遵循 Autotools 或 Cmake 框架时,它们往往会在 README 文件中提醒您。

  配置

  Angband 使用 Autotools,所以现在是编译代码的时候了!

  在 Angband 目录下,首先运行源代码提供的配置脚本:

  $ ./configure

  此步骤将扫描您的系统以查找 Angband 正确构建所需的依赖项。一些依赖关系非常基本,以至于您的计算机没有它们就无法运行,而另一些依赖关系则是专门的。在该过程结束时,脚本将为您提供有关它发现的内容的报告:

  [...]

configure: creating ./config.status

config.status: creating mk/buildsys.mk

config.status: creating mk/extra.mk

config.status: creating src/autoconf.h

Configuration:

Install path: /usr/local

binary path: /usr/local/games

config path: /usr/local/etc/angband/

lib path: /usr/local/share/angband/

doc path: /usr/local/share/doc/angband/

var path: (not used)

(save and score files in ~/.angband/Angband/)

-- Frontends --

- Curses Yes

- X11 Yes

- SDL2 Disabled

- SDL Disabled

- Windows Disabled

- Test No

- Stats No

- Spoilers Yes

- SDL2 sound Disabled

- SDL sound Disabled

  有些输出可能对您有意义,有些可能没有。无论如何,您可能已经注意到 SDL2 和 SDL 被标记为“Disabled”,而 Test 和 Stats 被标记为“None”。虽然这些信息是负面的,但不一定是坏事。本质上,这是警告和错误之间的区别。如果配置脚本遇到会阻止它构建代码的东西,它会警告您一个错误。

  如果您想稍微优化您的构建,您可以选择解决这些负面问题。通过搜索 Angband 文档,您可能会确定您实际上并不感兴趣 Test 和 Stats(它们是 Angband 开发人员特定的选项)。但是,通过在线研究,您可能会发现 SDL2 是一个不错的功能。

  要在编译代码时解决依赖关系,您需要安装缺失的组件和缺失组件的开发库。换句话说,Angband 需要 SDL2 来播放声音,但它需要 SDL2-devel(在 Debian 系统上称为 libsdl2-dev)来构建。使用包管理器安装这两个组件:

  $ sudo dnf install sdl2 sdl2-devel

  再次尝试配置脚本:

  $ ./configure --enable-sdl2

[...]

Configuration:

[...]

- Curses Yes

- X11 Yes

- SDL2 Yes

- SDL Disabled

- Windows Disabled

- Test No

- Stats No

- Spoilers Yes

- SDL sound Disabled

- SDL2 sound Yes

  制作(编译)

  一切都配置好后,运行 make 命令:

  这通常需要一段时间,但它提供了很多视觉反馈,因此您会知道正在编译代码。

  安装

  最后一步是安装刚刚编译的代码。安装代码没有什么神奇的。它所做的只是将大量文件复制到非常特定的目录中。无论您是从源代码编译还是运行精美的图形安装向导都是如此。由于代码将被复制到系统范围的目录中,因此您必须具有 root(管理)权限,这些权限由 sudo 命令授予。

  $ sudo make install

  运行应用程序

  安装应用程序后,您可以运行它。根据Angband的文档,启动游戏的命令是angband,所以试试:

  $ angband

  

  编译代码

  无论是在我的 Slackware 桌面还是我的 CentOS 笔记本电脑上,我都使用 NetBSD 的 pkgsrc 系统来编译我自己的大部分应用程序。我发现通过自己编译软件,我可以对应用程序中收录哪些功能、如何配置它、使用哪些库版本等有自己的想法。这很有意义,它有助于我保持随着新版本的发布,并且因为我有时会在此过程中发现错误,它可以帮助我处理许多不同的开源项目。

  您很少只有一种编译软件的方法,大多数开源项目都提供源代码(这就是它被称为“开源”的原因)和可安装的包。是否从源代码编译是您的选择,可能是因为您想要最新版本中没有的新功能,或者只是因为您喜欢自己编译代码。

  在家工作

  Angband 可以使用 Autotools 或 Cmake,所以如果你想体验另一种构建代码的方式,试试这个:

  $ mkdir build

$ cd build

$ cmake ..

$ make

$ sudo make install

  您也可以尝试使用 LLVM 编译器而不是 GNU 编译器集合 (GCC) 进行编译。现在,我把这个问题留给你自己研究(提示:尝试设置 CC 环境变量)。

  一旦你完成了对 Angband 的源代码和至少一些地下城的探索(你已经得到了一些休息),看看其他一些代码库。许多人会使用 Autotools 或 Cmake,而其他人可能会使用不同的东西。看看你能建造什么!

  通过:

  作者:Seth Kenlon 题目:lujun9972 译者:wxy 校对:wxy

  本文由LCTT原创编译,Linux中国荣幸推出

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线