分类 技术 下的文章

本系列的前一篇文章侧重于建立背景,以阐明为什么将现有的金融系统向充满未来主义的区块链体系迈进是“货币”改革的下一个自然步骤。我们将继续了解哪些区块链特性将有助于这一迁移。但是,金融市场十分复杂,并且人们的交易由众多组成部分组成,而不仅仅是货币。

本部分将探索哪些区块链特性能够让金融机构向区块链平台迁移,并将传统银行和金融系统与其合并。如之前讨论证明的那样,如果有足够的人参与到给定的区块链网络并且支持交易协议,则赋给“代币”的面值将提升并变得更稳定。以比特币(BTC)为例,就和我们习惯使用的纸币一样,像比特币和以太币这样的加密货币,都可以用于所有前者的目的,从购买食物到船只,乃至贷款和购买保险。

事实上,你所涉及的银行或其他金融机构很可能已经利用了区块链分类账本技术。金融行业中区块链技术最显著的用途是建立支付基础设施、基金交易技术和数字身份管理。传统上,后两者是由金融服务业传统的系统处理的。但由于区块链处理上的效率,这些系统正逐渐的向区块链迁移合并。区块链还为这些金融服务业的公司提供了高质量的数据分析解决方案,这一方面之所以能够快速的得到重视,主要得益于最近的数据科学的发展。

从这一领域前沿阵地的初创企业和项目入手考察,区块链似乎能有所保证,因为这些企业或项目的产品已经开始在市场上扩展开来。

PayPal,这是一家创建于 1998 年的在线支付公司,现为此类平台中最大的一个,常被视作运营和技术能力的基准。PayPal 很大程度上派生自现有的货币体系。它的创新贡献来自于如何收集并利用消费者数据,以提供即时的在线服务。如今,在线交易已被认为是理所当然的事,其所基于的技术方面,在该行业里的创新极少。拥有坚实的基础是一件好事,但在快速发展的 IT 行业里并不能提供任何竞争力,毕竟每天都有新的标准和新的技术。2014 年,PayPal 子公司 Braintree 宣布与流行的加密货币支付方案解决商 CoinbaseGoCoin 建立了合作关系,以便逐步将比特币和其它加密货币整合到它们的服务平台上。这基本上给了加密货币支付方案解决商的消费者在 PayPal 可靠且熟悉的平台下探索和体验的一个机会。事实上,打车公司 Uber 和 Braintree 具有独家合作关系,允许消费者在打车的时候使用比特币。

瑞波(Ripple) 正在让人们在多个区块链之间的操作变得更简单。瑞波已经成为美国各地区银行向前发展的头条新闻,比如,在不需要第三方中介的情况下,将资金双边转移给其他地区银行,从而降低了成本和时间管理费用。瑞波的 Codius 平台允许区块链之间互相操作,并为智能合约编入系统提供了方便之门,以最大限度地减少篡改和混乱。建立在这种先进、安全并且可根据需要扩展的平台上,瑞波拥有像瑞银和渣打银行 在内的客户列表,更多的银行客户也在期待加入。

Kraken,是一个在全球各地运营的美国加密货币交易所,因其可靠的加密货币量估算而闻名,甚至向彭博终端实时提供比特币定价数据。在 2015 年,他们与菲多尔银行合作建立世界上第一个提供银行业务和加密货币交易的加密货币银行。

另一家金融科技公司 Circle 则是目前同类公司中规模最大的一家,允许用户投资和交易加密货币衍生资产,类似于传统的货币市场资产。

如今,像 WyreStellar 这样的公司已经将国际电汇的提前期从平均 3 天降到了 6 小时。有人声称,一旦建立了适当的监管体系,同样的 6 小时可以缩短至几秒钟。

虽然现在上述内容集中在相关的初创项目上,但是不应忽视更受尊敬的老派金融机构的影响力和能力。这些全球范围内交易量达数十亿美元,已经存在了数十年乃至上百年的机构,在利用区块链及其潜力上有着相当的兴趣。

前面的文章中我们已经提到,摩根大通最近披露了他们在开发加密货币和企业级别的区块链基础分类帐本上的计划。该项目被称为 Quorum,被定义为 “企业级分布式分类帐和智能合约平台”。这一平台的主要目标是将大量的银行操作逐渐的迁移到 Quorum 中,从而削减像摩根大通这样的公司在保证隐私、安全和透明度上的重大开销。他们声称自己是行业中唯一完整拥有全部的区块链、协议和代币系统的玩家。他们也发布了一个称为 JPM 硬币 的加密货币,用于大额即时结算。JPM 硬币是由摩根大通等主要银行支持的首批“稳定币”。稳定币是其价格与现存主要货币系统相关联的加密货币。Quorum 也因其每秒几近 100 次远高于同行的交易量而倍受吹捧,这远远领先于同时代。

据报道,英国跨国金融巨头巴克莱已经注册了两项基于区块链的专利,旨在简化资金转移和 KYC 规程。巴克莱更多的是旨在提高自身的银行操作效率。其中一个应用是创建一个私有区块链网络,用于存储客户的 KYC 信息。经过验证、存储和确认后,这些详细信息将不可变,并且无需再进一步验证。若能实施这一应用,该协议将取消对 KYC 信息多次验证的需求。像印度这样有着高密度人口的发展中国家,其中大部分人口的 KYC 信息尚未被引入正式的银行系统中,若能引入这种具有革新意义的 KYC 系统,将有助于减少随机错误并减少交付时间。据传,巴克莱同时也在探索区块链系统的功能,以便解决信用状态评级和保险赔偿问题。

这种以区块链作支撑的系统,被用来消除不必要的维护成本,并利用智能合约来为那些需要慎重、安全和速度的企业在行业内赢得竞争力。这些企业产品建立在一个能够确保完整交易以及合同隐私的协议之上,同时建立了可使腐败和贿赂无效的共识机制。

普华永道 2017 年的全球金融科技报告表示到 2020 年,所有金融科技公司中约有 77% 将转向基于区块链的技术和流程。高达 90% 的受访者表示他们计划在 2020 年之前将区块链技术作为生产系统的一部分。他们的判断没错,因为从监管的角度来看,通过转移到基于区块链的系统上,可以确保显著的成本节约和透明度增加。

由于区块链平台默认内置了监管能力,因此企业从传统系统迁移到运行区块链分类账本的现代网络也是行业监管机构所欢迎的举措。交易和贸易运动可以一劳永逸地进行验证和跟踪。从长远来看,这可能会带来更好的监管和风险管理,更不用说改善了公司和个人的责任。

虽然对跨越式创新的投资是由企业进行的大量投资顺带所致,但如果认为这些措施不会渗透到最终用户的利益中是具有误导性的。随着银行和金融机构开始采用区块链,这将为他们带来更多的成本节约和效率,而这最终也将对终端消费者有利。透明度和欺诈保护带来的额外好处将改善客户的感受,更重要的是提高人们对银行和金融系统的信任。通过区块链及其与传统服务的整合,金融服务行业急需的革命将成为可能。 在本系列的下一部分中,我们将讨论房地产中的区块链


via: https://www.ostechnix.com/blockchain-2-0-redefining-financial-services/

作者:ostechnix 选题:lujun9972 译者:sanfusu 校对:wxy

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

在树莓派使用入门的第十篇文章中,我们将学习如何使用 GPIO。

到目前为止,本系列文章主要专注于树莓派的软件方面,而今天我们将学习硬件。在树莓派最初发布时,最让我感兴趣的主要特性之一就是它的 通用输入输出(GPIO)针脚。GPIO 可以让你的树莓派程序与连接到它上面的传感器、继电器、和其它类型的电子元件与物理世界来交互。

树莓派上的每个 GPIO 针脚要么有一个预定义的功能,要么被设计为通用的。另外,不同的树莓派型号要么 26 个,要么有 40 个 GPIO 针脚,你可以根据情况使用的。在维基百科上有一个 关于每个针脚的非常详细的说明_connector) 以及它的功能介绍。

你可以使用树莓派的 GPIO 针脚做更多的事情。关于它的 GPIO 的使用我写过一些文章,包括使用树莓派来控制节日彩灯的三篇文章(第一篇第二篇、和 第三篇),在这些文章中我通过使用开源程序让灯光随着音乐起舞。

树莓派社区在用不同编程语言创建不同的库方面做了非常好的一些工作,因此,你能够使用 CPythonScratch 和其它语言与 GPIO 进行交互。

另外,如果你想在树莓派与物理世界交互方面获得更好的体验,你可以选用 Raspberry Pi Sense Hat,它是插入树莓派 GPIO 针脚上的一个很便宜的电路板,借助它你可以通过程序与 LED、驾驶杆、气压计、温度计、温度计、 陀螺仪、加速度计以及磁力仪来交互。


via: https://opensource.com/article/19/3/gpio-pins-raspberry-pi

作者:Anderson Silva 选题:lujun9972 译者:qhwdw 校对:wxy

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

Docker 作为一款容器化应用的新兴软件,被大多数 IT 公司使用来减少基础设施平台的成本。

通常,没有 GUI 的 Docker 软件对于 Linux 管理员来说很容易,但是对于开发者来就有点困难。当把它搬到生产环境上来,那么它对 Linux 管理员来说也相当不友好。那么,轻松管理 Docker 的最佳解决方案是什么呢?

唯一的办法就是提供 GUI。Docker API 允许第三方应用接入 Docker。在市场上有许多 Docker GUI 应用。我们已经写过一篇关于 Portainer 应用的文章。今天我们来讨论另一个应用,Rancher。

容器让软件开发更容易,让开发者更快的写代码、更好的运行它们。但是,在生产环境上运行容器却很困难。

推荐阅读: Portainer:一个简单的 Docker 管理图形工具

Rancher 简介

Rancher 是一个全面的容器管理平台,它可以让容器在各种基础设施平台的生产环境上部署和运行更容易。它提供了诸如多主机网络、全局/本地负载均衡和卷快照等基础设施服务。它整合了原生 Docker 的管理能力,如 Docker Machine 和 Docker Swarm。它提供了丰富的用户体验,让 DevOps 管理员在更大规模的生产环境上运行 Docker。

访问以下文章可以了解 Linux 系统上安装 Docker。

推荐阅读:

Rancher 特性

  • 可以在两分钟内安装 Kubernetes。
  • 一键启动应用(90 个流行的 Docker 应用)。
  • 部署和管理 Docker 更容易。
  • 全面的生产级容器管理平台。
  • 可以在生产环境上快速部署容器。
  • 强大的自动部署和运营容器技术。
  • 模块化基础设施服务。
  • 丰富的编排工具。
  • Rancher 支持多种认证机制。

怎样安装 Rancher

由于 Rancher 是以轻量级的 Docker 容器方式运行,所以它的安装非常简单。Rancher 是由一组 Docker 容器部署的。只需要简单的启动两个容器就能运行 Rancher。一个容器用作管理服务器,另一个容器在各个节点上作为代理。在 Linux 系统下简单的运行下列命令就能部署 Rancher。

Rancher 服务器提供了两个不同的安装包标签如 stablelatest。下列命令将会拉取适合的 Rancher 镜像并安装到你的操作系统上。Rancher 服务器仅需要两分钟就可以启动。

  • latest:这个标签是他们的最新开发构建。这些构建将通过 Rancher CI 的自动化框架进行验证,不建议在生产环境使用。
  • stable:这是最新的稳定发行版本,推荐在生产环境使用。

Rancher 的安装方法有多种。在这篇教程中我们仅讨论两种方法。

  • 以单一容器的方式安装 Rancher(内嵌 Rancher 数据库)
  • 以单一容器的方式安装 Rancher(外部数据库)

方法 - 1

运行下列命令以单一容器的方式安装 Rancher 服务器(内嵌数据库)

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable
$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:latest

方法 - 2

你可以在启动 Rancher 服务器时指向外部数据库,而不是使用自带的内部数据库。首先创建所需的数据库,数据库用户为同一个。

> CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
> GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
> GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';

运行下列命令启动 Rancher 去连接外部数据库。

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server \
 --db-host myhost.example.com --db-port 3306 --db-user username --db-pass password --db-name cattle

如果你想测试 Rancher 2.0,使用下列的命令去启动。

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/server:preview

通过 GUI 访问 & 安装 Rancher

浏览器输入 http://hostname:8080http://server_ip:8080 去访问 rancher GUI.

怎样注册主机

注册你的主机 URL 允许它连接到 Rancher API。这是一次性设置。

接下来,点击主菜单下面的 “Add a Host” 链接或者点击主菜单上的 “INFRASTRUCTURE >> Add Hosts”,点击 “Save” 按钮。

默认情况下,Rancher 里的访问控制认证禁止了访问,因此我们首先需要通过一些方法打开访问控制认证,否则任何人都不能访问 GUI。

点击 “>> Admin >> Access Control”,输入下列的值最后点击 “Enable Authentication” 按钮去打开它。在我这里,是通过 “local authentication” 的方式打开的。

  • “Login UserName”: 输入你期望的登录名
  • “Full Name”: 输入你的全名
  • “Password”: 输入你期望的密码
  • “Confirm Password”: 再一次确认密码

注销然后使用新的登录凭证重新登录:

现在,我能看到本地认证已经被打开。

怎样添加主机

注册你的主机后,它将带你进入下一个页面,在那里你能选择不同云服务提供商的 Linux 主机。我们将添加一个主机运行 Rancher 服务,因此选择“custom”选项然后输入必要的信息。

在第 4 步输入你服务器的公有 IP,运行第 5 步列出的命令,最后点击 “close” 按钮。

$ sudo docker run -e CATTLE_AGENT_IP="192.168.56.2"  --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.56.2:8080/v1/scripts/16A52B9BE2BAB87BB0F5:1546214400000:ODACe3sfis5V6U8E3JASL8jQ

INFO: Running Agent Registration Process, CATTLE_URL=http://192.168.56.2:8080/v1
INFO: Attempting to connect to: http://192.168.56.2:8080/v1
INFO: http://192.168.56.2:8080/v1 is accessible
INFO: Configured Host Registration URL info: CATTLE_URL=http://192.168.56.2:8080/v1 ENV_URL=http://192.168.56.2:8080/v1
INFO: Inspecting host capabilities
INFO: Boot2Docker: false
INFO: Host writable: true
INFO: Token: xxxxxxxx
INFO: Running registration
INFO: Printing Environment
INFO: ENV: CATTLE_ACCESS_KEY=9946BD1DCBCFEF3439F8
INFO: ENV: CATTLE_AGENT_IP=192.168.56.2
INFO: ENV: CATTLE_HOME=/var/lib/cattle
INFO: ENV: CATTLE_REGISTRATION_ACCESS_KEY=registrationToken
INFO: ENV: CATTLE_REGISTRATION_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_URL=http://192.168.56.2:8080/v1
INFO: ENV: DETECTED_CATTLE_AGENT_IP=172.17.0.1
INFO: ENV: RANCHER_AGENT_IMAGE=rancher/agent:v1.2.11
INFO: Launched Rancher Agent: e83b22afd0c023dabc62404f3e74abb1fa99b9a178b05b1728186c9bfca71e8d

等待几秒钟后新添加的主机将会出现。点击 “Infrastructure >> Hosts” 页面。

怎样查看容器

只需要点击下列位置就能列出所有容器。点击 “Infrastructure >> Containers” 页面。

怎样创建容器

非常简单,只需点击下列位置就能创建容器。

点击 “Infrastructure >> Containers >> Add Container” 然后输入每个你需要的信息。为了测试,我将创建一个 latest 标签的 CentOS 容器。

在同样的列表位置,点击 “ Infrastructure >> Containers”。

点击容器名展示容器的性能信息,如 CPU、内存、网络和存储。

选择特定容器,然后点击最右边的“三点”按钮或者点击“Actions”按钮对容器进行管理,如停止、启动、克隆、重启等。

如果你想控制台访问容器,只需要点击 “Actions” 按钮中的 “Execute Shell” 选项即可。

怎样从应用目录部署容器

Rancher 提供了一个应用模版目录,让部署变的很容易,只需要单击一下就可以。 它维护了多数流行应用,这些应用由 Rancher 社区贡献。

点击 “Catalog >> All >> Choose the required application”,最后点击 “Launch” 去部署。


via: https://www.2daygeek.com/rancher-a-complete-container-management-platform-for-production-environment/

作者:Magesh Maruthamuthu 译者:arrowfeng 校对:wxy

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

主题和可视化定制是 Linux 的主要优势之一。由于所有代码都是开源的,因此你可以比 Windows/Mac OS 更大程度上地改变 Linux 系统的外观和行为方式。GTK 主题可能是人们定制 Linux 桌面的最流行方式。GTK 工具包被各种桌面环境使用,如 Gnome、Cinnamon、Unity、XFC E和 budgie。这意味着为 GTK 制作的单个主题只需很少的修改就能应用于任何这些桌面环境。

有很多非常高品质的流行 GTK 主题,例如 ArcNumixAdapta。但是如果你想自定义这些主题并创建自己的视觉设计,你可以使用 Oomox

Oomox 是一个图形应用,可以完全使用自己的颜色、图标和终端风格自定义和创建自己的 GTK 主题。它自带几个预设,你可以在 Numix、Arc 或 Materia 主题样式上创建自己的 GTK 主题。

安装 Oomox

在 Arch Linux 及其衍生版中:

Oomox 可以在 AUR 中找到,所以你可以使用任何 AUR 助手程序安装它,如 yay

$ yay -S oomox

在 Debian/Ubuntu/Linux Mint 中,在这里下载 oomox.deb 包并按如下所示进行安装。在写本指南时,最新版本为 oomox_1.7.0.5.deb

$ sudo dpkg -i oomox_1.7.0.5.deb
$ sudo apt install -f

在 Fedora 上,Oomox 可以在第三方 COPR 仓库中找到。

$ sudo dnf copr enable tcg/themes
$ sudo dnf install oomox

Oomox 也有 Flatpak 应用。确保已按照本指南中的说明安装了 Flatpak。然后,使用以下命令安装并运行 Oomox:

$ flatpak install flathub com.github.themix_project.Oomox
$ flatpak run com.github.themix_project.Oomox

对于其他 Linux 发行版,请进入 Github 上的 Oomox 项目页面(本指南末尾给出链接),并从源代码手动编译和安装。

自定义并创建自己的 GTK2、GTK3 主题

主题定制

你可以更改几乎每个 UI 元素的颜色,例如:

  1. 标题
  2. 按钮
  3. 标题内的按钮
  4. 菜单
  5. 选定的文字

在左边,有许多预设主题,如汽车主题、现代主题,如 Materia 和 Numix,以及复古主题。在窗口的顶部,有一个名为主题样式的选项,可让你设置主题的整体视觉样式。你可以在 Numix、Arc 和 Materia 之间进行选择。

使用某些像 Numix 这样的样式,你甚至可以更改标题渐变,边框宽度和面板透明度等内容。你还可以为主题添加黑暗模式,该模式将从默认主题自动创建。

图标集定制

你可以自定义用于主题图标的图标集。有两个选项:Gnome Colors 和 Archdroid。你可以更改图标集的基础和笔触颜色。

终端定制

你还可以自定义终端颜色。该应用有几个预设,但你可以为每个颜色,如红色,绿色,黑色等自定义确切的颜色代码。你还可以自动交换前景色和背景色。

Spotify 主题

这个应用的一个独特功能是你可以根据喜好定义 spotify 主题。你可以更改 spotify 的前景色、背景色和强调色来匹配整体的 GTK 主题。

然后,只需按下“应用 Spotify 主题”按钮,你就会看到这个窗口:

点击应用即可。

导出主题

根据自己的喜好自定义主题后,可以通过单击左上角的重命名按钮重命名主题:

然后,只需点击“导出主题”将主题导出到你的系统。

你也可以只导出图标集或终端主题。

之后你可以打开桌面环境中的任何可视化自定义应用,例如基于 Gnome 桌面的 Tweaks,或者 “XFCE 外观设置”。选择你导出的 GTK 或者 shell 主题。

总结

如果你是一个 Linux 主题迷,并且你确切知道系统中的每个按钮、每个标题应该怎样,Oomox 值得一试。 对于极致的定制者,它可以让你几乎更改系统外观的所有内容。对于那些只想稍微调整现有主题的人来说,它有很多很多预设,所以你可以毫不费力地得到你想要的东西。

你试过吗? 你对 Oomox 有什么看法? 请在下面留言!

资源


via: https://www.ostechnix.com/oomox-customize-and-create-your-own-gtk2-gtk3-themes/

作者:EDITOR 选题:lujun9972 译者:geekpi 校对:wxy

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

树莓派是一个很棒的游戏平台。在我们的系列文章的第九篇中学习如何开始使用树莓派。

回到我们关于树莓派入门系列文章的第五篇,我提到 Minecraft 是一种教孩子们使用游戏平台进行编程的方法。作为一个不错的游戏平台,今天我们将讨论在树莓派上使用或者不使用模拟器来玩游戏的方式。

使用模拟器玩游戏

模拟器是一种能让你在树莓派上玩不同系统、不同年代游戏的软件。在如今众多的模拟器中,RetroPi 是树莓派中最受欢迎的。你可以用它来玩 Apple II、Amiga、Atari 2600、Commodore 64、Game Boy Advance 和其他许多游戏。

如果 RetroPi 听起来有趣,请阅读这些说明开始使用,玩得开心!

原生 Linux 游戏

树莓派的操作系统 Raspbian 上也有很多原生 Linux 游戏。“Make Use Of” 有一篇关于如何在树莓派上玩 10 个老经典游戏,如 Doom 和 Nuke Dukem 3D 的文章。

你也可以将树莓派用作游戏服务器。例如,你可以在树莓派上安装 Terraria、Minecraft 和 QuakeWorld 服务器。


via: https://opensource.com/article/19/3/play-games-raspberry-pi

作者:Anderson Silva 选题:lujun9972 译者:geekpi 校对:wxy

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

我过去认为 makefile 只是一种将一组组的 shell 命令列出来的简便方法;过了一段时间我了解到它们是有多么的强大、灵活以及功能齐全。这篇文章带你领略其中一些有关规则的特性。

备注:这些全是针对 GNU Makefile 的,如果你希望支持 BSD Makefile ,你会发现有些新的功能缺失。感谢 zge 指出这点。

规则

规则 rule 是指示 make 应该如何并且何时构建一个被称作为 目标 target 的文件的指令。目标可以依赖于其它被称作为 前提 prerequisite 的文件。

你会指示 make 如何按 步骤 recipe 构建目标,那就是一套按照出现顺序一次执行一个的 shell 命令。语法像这样:

target_name : prerequisites
    recipe

一但你定义好了规则,你就可以通过从命令行执行以下命令构建目标:

$ make target_name

目标一经构建,除非前提改变,否则 make 会足够聪明地不再去运行该步骤。

关于前提的更多信息

前提表明了两件事情:

  • 当目标应当被构建时:如果其中一个前提比目标更新,make 假定目的应当被构建。
  • 执行的顺序:鉴于前提可以反过来在 makefile 中由另一套规则所构建,它们同样暗示了一个执行规则的顺序。

如果你想要定义一个顺序但是你不想在前提改变的时候重新构建目标,你可以使用一种特别的叫做“ 唯顺序 order only ”的前提。这种前提可以被放在普通的前提之后,用管道符(|)进行分隔。

样式

为了便利,make 接受目标和前提的样式。通过包含 % 符号可以定义一种样式。这个符号是一个可以匹配任何长度的文字符号或者空隔的通配符。以下有一些示例:

  • %:匹配任何文件
  • %.md:匹配所有 .md 结尾的文件
  • prefix%.go:匹配所有以 prefix 开头以 .go 结尾的文件

特殊目标

有一系列目标名字,它们对于 make 来说有特殊的意义,被称作 特殊目标 special target

你可以在这个文档发现全套特殊目标。作为一种经验法则,特殊目标以点开始后面跟着大写字母。

以下是几个有用的特殊目标:

  • .PHONY:向 make 表明此目标的前提可以被当成伪目标。这意味着 make 将总是运行,无论有那个名字的文件是否存在或者上次被修改的时间是什么。
  • .DEFAULT:被用于任何没有指定规则的目标。
  • .IGNORE:如果你指定 .IGNORE 为前提,make 将忽略执行步骤中的错误。

替代

当你需要以你指定的改动方式改变一个变量的值, 替代 substitution 就十分有用了。

替代的格式是 $(var:a=b),它的意思是获取变量 var 的值,用值里面的 b 替代词末尾的每个 a 以代替最终的字符串。例如:

foo := a.o
bar : = $(foo:.o=.c) # sets bar to a.c

注意:特别感谢 Luis Lavena 让我们知道替代的存在。

档案文件

档案文件是用来一起将多个数据文档(类似于压缩文件的概念)收集成一个文件。它们由 ar Unix 工具所构建。ar 可以用于为任何目的创建档案,但除了静态库,它已经被 tar 大量替代。

make 中,你可以使用一个档案文件中的单独一个成员作为目标或者前提,就像这样:

archive(member) : prerequisite 
    recipe

最后的想法

关于 make 还有更多可探索的,但是至少这是一个起点,我强烈鼓励你去查看文档,创建一个笨拙的 makefile 然后就可以探索它了。


via: https://monades.roperzh.com/rediscovering-make-power-behind-rules/

作者:Roberto Dip 译者:tomjlw 校对:wxy

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