Udemy

Compiling Software from Source Code

来自 Ziyad Yehia 的免费视频教程
Energetic Instructor with a Project-based Approach
评分:4.6,满分 5 分讲师评分
3 门课程
355216 名学生
Compiling Software from Source Code

讲座描述

In this video, you will learn how to download source code from gnu.org, and then customise, compile and install it to demonstrate the freedom that free open source software gives you.

通过完整课程学习更多知识

Linux Mastery: Master the Linux Command Line in 11.5 Hours

Learn the Linux Command Line from Scratch and Improve your Career with the World's Most Fun Project-Based Linux Course!

10:35:03的随选视频 • 更新于 April 2023

Quickly Learn the Linux Command Line from Scratch!
Use Bash Scripts and Cron Scheduling Software to Automate Boring Tasks!
Become an Independent User of the Linux Operating System!
Learn how to Search for, Customise, Install and Manage Open Source Software with Package Managers!
Operate a Linux Computer Entirely from the Command Line!
Gain a Complete Understanding of Linux & fill in any existing knowledge gaps!
简体中文 [自动]
你们好啊, 漂亮的小家伙们。 欢迎观看这段视频, 我们将学习如何通过自己的小修改, 将源代码转换为运行程序。 因此, 在本视频中, 您将学习如何下载源代码, 编辑它, 并使用新的C编译器将该代码转换为合理的二进制程序。 您还将学习如何使用make命令从源代码安装软件。 我们还将稍微修改代码, 以便可以看到安装的确实是修改后的代码。 在视频的最后, 你应该对开源自由软件的伟大有了更好的理解, 你也应该知道如何从源代码编译软件。 所以让我们开始吧。 好吧, 我会的 现在我们又来到了新的组织网站, 在软件选项卡上, 我们可以看到每个软件包都可以向下滚动到底部。 这是新操作系统附带的。 到目前为止, 我们运行过的所有命令的源代码, 如fine命令、 RLS命令等, 都可以在这个核心实用程序包中找到。 让我们继续下载这个软件包并查看一下。 为此, 我们单击链接, 它将打开另一个页面。 如果我们向下滚动到这里的下载部分, 它给予我们提供几个链接, 它告诉我们可以在这个链接上找到稳定的源代码版本, 可以在这个链接上找到测试源代码版本。 现在, 稳定版本和测试版本之间的区别是, 稳定版本的源代码版本是已知的工作。 它们已经过测试, 而测试源代码版本可能是在尝试新的东西, 你知道, 它并不完全稳定。 可能吧, 还没到最后. 好吧, 我知道了 所以我们要尝试稳定的来源。 我将单击该链接。 我们可以看到这里有一堆软件包, 一堆列表格式的捆绑包。 最新的版本在列表的底部。 所以如果我们向下滚动到列表的底部, 我们会看到核心实用程序版本8。 28. 我们要点击的是以点z结尾的那个。 所以不是以点z结尾的, 而是以点x, z结尾的. 如果我现在点击它, 我们就会看到。 我们会看到一个弹出窗口, 我将单击“Save File”(保存文件), 然后单击。 好吧, 我会的 这已经保存在我们的下载文件夹中。 如果我现在转到终端中的downloads文件夹, 您可以看到我在主目录中的那一刻, 我转到downloads文件夹并列出它, 您可以看到我们有这个核心实用程序版本8。 2个8xz 现在, 这是一个使用x z压缩算法压缩的压缩tar归档文件。 如果我看一下这个, 我们会看到用find命令, 我们会看到它是x, z, 压缩数据。 现在X Z只是一种压缩算法, 就像我们在文件压缩和归档视频中简要介绍的B zip或GZIP压缩算法一样, 因为它不是一种更常用的算法, 但我们可以使用TAA命令对其进行解包。 所以我们就这么做吧。 我们可以输入TAR, 如您所知, 如何提取文件, 您可以为它给予X和F选项, 然后告诉它哪个归档文件。 但是要通过zip压缩算法进行提取, 需要给予它大写的j选项。 所以小写j选项是针对B zip two的, 但大写j选项是针对x zip的。 如果您想了解有关这方面的更多信息, 请查看我在相应视频中提供的文件压缩和归档备忘单。 好吧, 我会的 如果我们继续按回车键, 我们会看到我们没有得到任何信息, 因为我们没有谈论V选项。 但是如果我现在使用LZ, 我们会看到我们现在有了一个新的文件夹, 叫做Core Utils 8。 28. 如果我们看到互联网, 我们看到内部调用效用, 我们可以看到, 我们有一大堆东西在那里。 好吗? 但是我们可以特别注意这个CRC目录, 因为CRC是source的缩写, 它是保存源代码的地方。 如果我们进入CRC并单击屏幕查看, 我们可以看到这里有一大堆文件。 让我们将ls数据通过管道输入less命令。 第一点。 现在, 这使得上下滚动变得更容易了, 您可以看到, 现在我们可以看到以点C结尾的大量文件。 现在点C向我们表明, 这些文件都是用C编程语言编写的, 这是一种非常常见的编程语言, 新软件是用这种语言编写的, 因为它的编写时间是在20世纪80年代和90年代。 让我们来看看LS命令背后的代码。 例如, 我们可以使用lhs, 让我们直接用grep输出ls, 我们可以看到我们在这里有一个ls.c文件。 让我们来看看。 纳米是C点, 我们在那里。 这实际上是源代码。 这是所有的源代码, 我们最大化了一点。 LS命令的源代码。 现在是不是很棒? 如果你有时间, 有能力, 有意愿, 你可以浏览这些代码, 研究它到底在做什么, 这是自由软件运动所追求的自由之一。 我给予你。 但我们实际上也可以修改这段代码, 并将其重新编译成一个运行的软件, 这就是我们现在要做的。 这不是一门关于C语言编程的课程, 但在每个C程序中, 都有一个函数, 叫做主函数, 它是一个非常重要的函数, 总是在运行. 好吧, 我会的 现在我将修改该函数, 以便每当LHS运行时, 计算机都将打印输出。 大家好, 美女们, 请上银幕. 好的, 我将在主函数中输入一些代码来实现这一点。 现在, 在为这节课做了一些准备之后, 我发现这个文件中的main函数大约从第1443行开始。 所以如果我们使用Nano's, 使用控制和下划线选项转到行函数。 如果我输入第一行, 第四行, 第四行, 第三行, 然后按回车键, 你可以看到我们已经在主函数magic处结束了。 所以我将把代码排在最上面, 用来打印. 打印F, 然后在这里输入. 你们好啊, 漂亮的小家伙们。 并确保它以一个新行结尾, 并在那里加上反斜杠n字符。 我把这个记下来。 这没什么区别, 但你知道这样更好, 让我们试着去掉最后一行的多余空间. 这不重要。 但好吧, 我们到了。 所以我们在这里放了一个函数。 你好啊 漂亮的人有了新的线条性格。 所以这一行, 它转到了一个新的行。 现在, 如果我们用control和O保存, 然后用control和X退出, 我们现在已经修改了LS命令代码, 所以这很酷。 但是现在我们如何把这段代码变成一个合理的程序, 并安装在我们的电脑上呢? 因为它们是用C语言编写的, 所以在运行之前需要将代码编译成机器语言。 为此, 我们需要一个编译器, 更具体地说, 需要一个针对C编程语言的编译器。 现在新的C编译器或CC是在GNU Linux系统上使用的编译器, 我们可以通过输入下面的命令来得到它, 下面的命令是sudo apt get install DCC, 现在, 我不想让你们太担心这个问题, 因为我们稍后会详细解释这个命令的实际含义, 我们会在这节课中做这个解释。 但简而言之, 我们所做的是告诉计算机查看Ubuntu可用的软件库, 下载并安装新的C编译器或GCC包。 同样, 在接下来的几个视频中, 这将变得更加清楚, 但只需像我在这里所做的那样键入它, 当你高兴时, 按回车键, 因为我们使用了sudo, 它将要求我们输入密码, 就像我们以前使用sudo时一样。 所以我把它输入进去, 希望是正确的. 祝你好运 不知道。 让我们再试一次 我们走吧。 现在它说, 嘿, 我们必须安装一大堆软件包才能得到这个GCC软件包。 这将是大约72兆字节的额外磁盘空间。 您现在要继续吗? 我可以打字。 是的, 我正要去打字。 为什么要按回车键, 它会继续这样做。 这可能需要一点时间, 这取决于你的互联网连接, 但它似乎已经下载了它在我的情况下, 现在它只是做安装。 它将开始解包它下载的每个不同的包, 我们现在实际上看到了安装过程。 我们将在本课程得后面部分更详细地讨论这一点, 但您可以看到, 我们不必下载任何向导, 也不必单击“下一步”, “下一步”, “下一步”, “下一步”, “同意任何条款或条件”等. 因为所有这些软件都在新的公共许可证下, 它们都给你同样的, 同样的, 呃, 不同的, 呃, 彼此同样的自由。 所以现在已经安装好了, 我们什么都不用做。 我们现在已经安装了新的C编译器和一大堆其他的东西。 现在我们可以编译代码了。 好了, 让我们把注意力转向漂亮的源代码。 现在, 由于不同的计算机具有不同的体系结构, 我们需要将此代码的安装配置到特定的计算机上。 它附带了一个名为Configure的脚本。 现在我们在源文件夹中, 我们在源文件夹中。 让我们回到CD文件夹, 点, 点回到一个文件夹, 清空屏幕, 再看一遍。 您可以看到这里有一个名为“配置”的脚本, 我们知道它是一个脚本, 因为它是绿色。 好的, 让我们输入bash configure, 然后按回车键。 它所做的是配置新的C编译器, GTC, 以确保当它编译所有这些时, 我们告诉它的软件, 它将以适合我们计算机架构的方式来完成。 它正在做适当的调整。 除了配置新的C编译器之外, 这个配置脚本还做了一件重要的事情, 那就是它创建了一个名为Makefile的新文件。 现在, Makefile负责安装这个新的软件包, 但是要让Makefile工作, 顺便说一下, 这是一个巨大的绕口令, 我们需要一个新的命令, 称为Make。 完成配置后, 我们将安装make命令, 安装方式与我们刚刚安装的非常类似。 C编译器。 所以如果我们在这里坐一秒钟, 我们看到所有这些美丽的文字飞上屏幕, 它看起来很棒, 虽然, 对不对? 这就像你可能会看到的东西, 就像一个不像电影与黑客, 你知道, 和类似的东西。 我们现在真的在这么做。 所以你要为自己感到骄傲。 好吧, 我会的 所以现在已经结束了。 如果我们看一下这个目录, 我们应该可以看到这个新文件, 叫做Makefile。 现在, Makefile是一个重要的文件, 但我们需要能够运行它。 我们需要有总指挥。 为此, 我们将输入sudo apt get install make, 当我们按Enter键时, 它将经历一个非常相似的安装过程, 现在所有这些都安装得非常快, 非常容易安装。 好吧, 我会的 当我们在Makefile所在的文件夹中时, 如果我们运行make命令, 您可以看到它将遍历并编译所有它找到的最近未编译过的C文件。 仍然有一些未完成的更改, 实际上是该文件夹中的所有C代码, 包括我们的LS文件。 它所做的就是把所有的代码编译成机器代码, 编译成可以在计算机上运行的二进制代码。 好吧, 我会的 所以这就是当你运行像C这样的编译语言时所需要的。 所以, 当这一切完成后, 我们就可以安装新编译的程序了。 但我还是把视频剪了吧, 这样可以保存时间, 你知道的, 免得你等得太久。 好吧, 我会的 现在完成了。 我们找到了LZ命令的代码。 好吗? 我们编辑了代码, 然后安装了一个叫做新C编译器的东西, 它需要把代码转换成计算机运行所需的机器代码。 好吧, 我会的 因此, 我们安装了C编译器, 并且必须先配置该编译器, 然后它才能正确工作, 以满足计算机的特定要求。 因此, 我们配置编译器, 然后在配置完成后, 我们使用make命令运行它, 以确保每一位代码现在都转换为机器码。 好吧, 我会的 现在我们有了机器代码, 剩下的唯一步骤就是把机器代码安装到我们路径上需要的地方, 让它真正工作。 我们可以通过使用pseudo sudo make install命令来完成此操作。 如果我单击屏幕类型sudo make install, 它会安装所有类似的内容。 这是非常, 非常快。 我们现在已经安装了这个版本8附带的每一个不同的软件。 28的核心UTILS包。 好吧, 我会的 让我们来看看它是如何工作的。 好吧, 我会的 如果我们关闭终端然后重新打开它, 那么现在如果我们运行LZ命令, 我们可以看到它在那里说你好, 美丽的人们, 每次它运行时, 因为我们修改了代码并安装了它。 这是多么令人敬畏? 好吧, 我知道了 因此, 开源和自由软件万岁。 实际上, 这个过程要比我在这里展示的快得多。 所以要改回来, 我们只需要重新编辑源代码, 用make重新编译, 然后用make install重新安装。 所以, 如果我回到我们的广告下载, 它实际上是一个更快的过程, 当你得到一点更好的。 所以我们在这里。 我们进入了核心效用文件。 我们将转到源代码文件夹, 就在那里. 好吧, 我会的 让我们来看看Nano。 LZ C, 我们转到第1443行, 我们要删除这一行, 我放在那里的这一行, 保存。 好吗? 现在, 如果我现在清除屏幕, 我们要做的就是make和sudo make install。 哦, 因为我在错误的文件夹。 我们走吧。 Make和sudo make安装。 好吧, 我会的 现在请注意make命令实际上是如何编译RLS命令的, 因为它注意到了不同之处。 让我用我们的结束运行我的密码在那里, 这样它就可以安装它。 现在, 当我关闭终端并重新打开它并使用LZ命令时, 它就恢复了正常。 所以你看到这有多快了, 对吧? 一旦我们配置了一次C编译器, 或者至少为软件包配置了F编译器, 就可以很快地编辑它了。 这是因为主命令也知道, 它只需要重新编译受我们的更改影响的代码, 而不是整个包, 因为我们第一次这样做时, 整个包对系统来说是新的。 好的, make是一个非常聪明的程序, 就像我说的, 现在我们已经安装了LZ程序的新版本, 现在你好, 你美丽的人的信息已经消失了, 它又回到了原来的样子。 所以, 你们在这个视频中看到了她从. org网站访问源代码的美丽的人。 如何修改源代码, 以及如何使用, 配置, 制作和制作安装来安装新软件。 现在最棒的是你可以访问和修改GNU Linux操作系统上所有东西的源代码。 如果你愿意练习它, 你对你的计算机如何工作有绝对的权力。 所以希望你能看到在你的电脑上运行开源自由软件是一种很好的资产。 你也可以欣赏这样一个系统的先驱们为建立它所付出的努力。 但我们在本视频中经历的过程相对较长, 有时您只想安装软件, 然后继续您正在做的事情。 因此, 在所谓的软件库中有大量的维护和预编译代码。 我们实际上使用本节中的存储库来安装新的C编译器。 99%的情况下, 您都将使用make命令和软件库来安装软件, 它们附带了许多非常酷的功能。 所以现在你明白了, 是的, 你可以查找源代码, 并修改你的计算机如何工作, 无论你喜欢手动。 让我们来看看软件库是如何给予您访问大量的软件库的, 这些软件库是优先预编译的, 随时可以使用。 因此, 请看一看它们是如何工作的。 所以, 为了所有的善良, 我会看到你在下一个视频。