OpenWrt 构建工具链文档翻译(macOS 系统要求)‌

注意:‌ 此方法‌非官方支持‌,推荐使用原生 GNU/Linux 环境进行构建。

测试环境:‌

macOS 10.15.7 (Darwin v19.6.0), Xcode 12.1 build 12A7403, 以及 homebrew 提供的软件包
macOS 11.6 (Darwin v20.6.0) Xcode 13.0 build 13A233, arm64 内核, 以及 homebrew 提供的软件包

系统信息查看命令:‌

查看 macOS 版本号等:sw_vers
查看 Darwin 版本号等:sysctl kern.osrelease

macOS 与 Darwin Unix:‌
您可以选择跳过本节,直接前往下一节 ‌A. 获取构建工具链‌。

macOS 和 Darwin Unix 简要信息:‌

macOS‌ 包含 APSL(Apple 公共源许可证)和 BSD(伯克利软件发行版)以及其他许可的开源组件[1,2,3]
Darwin‌ 基于 XNU 混合内核,并包含 Darwin Unix 作为内部子系统以支持基于命令行的工具(来自各种 Unix 和 Linux 发行版)。Darwin 支持 POSIX API,因为它基于 BSD Unix 并且大量使用 FreeBSD 用户态工具等。大多数驱动程序和 GUI 层的大部分组件都是专有(非开源)许可。构建工具需要与 “darwin” 兼容。

内核扩展变化:‌

在 macOS v10.15.x (Catalina) 及更早版本中,内核模块、硬件驱动程序等通常以内核扩展(kext)的形式在内核空间/层加载,并使用 LKM 和 KPI(内核编程接口)以及 d-KPI(已弃用的 KPI)。
但从 macOS v11 (Big Sur) 及更新版本开始,较新的系统扩展(sext/sysext)和(较旧的)不带 d-KPI 的 kext 在用户空间/层中使用。此外,macOS v11 及更高版本中较新的驱动程序扩展(dext)也在用户空间/布局中运行,并取代了早期的 I/O 套件。因此,硬件/软件开发商/制造商仍应提供 sext/dext 和不带 d-KPI 的 kext。
早期的 macOS/Darwin 使用 HFS 分区,现在使用 APFS。

衍生项目:‌

一个衍生项目 OpenDarwin 于 2004 年 7 月 16 日发布了最后一个稳定版本 v7.2.1,随后于 2006 年 7 月 25 日关闭。一些自由软件社区、ISC 等与 Apple 合作开发了 OpenDarwin,其中一些想法被用于构建 GNU-Darwin[1,2]。另一个衍生项目 PureDarwin 于 2015 年发布了基于 Darwin 9 并带有 X11 GUI 的预览版,随后于 2019 年发布了仅支持命令行的、基于 Darwin 17 的 17.4 Beta 版。

驱动程序链接:‌

无线:,
网卡:, ,
Zyxel 调制解调器:
读卡器:
在 macOS 下支持 Ext2 和 Ext3(Linux 文件系统):,

A. 获取构建工具链:‌
获取更适合 Apple 硬件、macOS 和 Darwin Unix 的构建工具链。

● 安装 Xcode 或 CLT:‌

从此处获取 Xcode。注意:安装程序文件下载量超过/接近 5 GB,并且需要 17+ GB 的空间。Xcode 11.5:16,958,217,326 字节(磁盘上 10.5 GB)。
查看已安装的 Xcode 版本号,运行命令:xcodebuild -version。如果输出不显示版本号,则 Xcode 未安装。

CLT 替代方案:‌
如果您不想获取 Xcode,其中一个替代方案是:

从此处获取命令行工具(CLT),或从 macOS 的 App Store 加载它,或使用以下命令,或通过包管理器软件获取 apple-gcc 包。CLT 也称为命令行开发人员工具。注意:安装程序下载量低于/接近 300 MB,可能需要大约 2 GB 的空间。
在终端实用程序/应用程序中,运行此命令以加载 CLT:xcode-select –install
查看已安装的 CLT 版本号,运行命令:pkgutil –pkg-info=com.apple.pkg.CLTools_Executables。如果输出不显示版本号或显示消息”…No receipt…”,则 CLT 未安装,或其与 Xcode 捆绑在一起。要查看预安装的软件包,您可以运行:pkgutil –pkgs

● 查看工具链版本号、目录等信息,运行命令:‌
gcc -v && llvm-gcc -v && clang -v

● 您也可以运行 xcrun clang 命令,并查看其输出:‌
UserMacBook:~ username$ xcrun clang clang: error: no input files
如果输出‌不是‌此消息 clang: error: no input files,则要么安装有错误,要么可执行文件未正确设置在 PATH 环境变量中。

● 构建工具链用途:‌
来自 Apple 的构建工具链(Xcode 或 CLT)在(第一阶段)用于创建适用于 OpenWrt 构建目的的软件组件,然后(在第二阶段)这些软件组件用于创建最终的 OpenWrt 组件,以便创建与跨平台广泛兼容的 OpenWrt 固件等。

B. 查看隐藏文件/文件夹:‌
● 我们需要非常准确地查看完整文件名、文件扩展名、所有文件和目录(包括隐藏的),以减少错误。‌

● 使用 Finder 启动终端:‌

Finder 与 Windows 资源管理器文件浏览器应用程序/工具非常相似。在 macOS 中 > 单击桌面屏幕上的任何空白区域 > 然后在顶部的  菜单中,单击 Window > 单击 Bring All to Front > 在 Finder 的左侧窗格(左侧列)中,转到 Favorites 下并单击 Applications > 然后向下滚动并进入 Utilities 子文件夹 > 然后单击 Terminal 或 Terminal.app 启动它。macOS 终端与 Windows 命令提示符非常相似,是一个命令行界面(CLI)工具。
立即启动 Finder 的热键:[Alt/Option⌥] + [Command⌘] + [Space-bar],然后关闭搜索选项卡。
立即启动终端的热键:无。(注意:如果您勾选了选项:重启后加载之前运行的应用程序,则重启后终端将保持运行状态并自动启动)。

● 在终端内运行以下命令:‌
defaults write com.apple.Finder AppleShowAllFiles true
以上命令仅使文件在文件浏览器软件中可见,实际上并不更改任何文件属性。

● 然后您必须重启 Mac 计算机‌ 或运行(以下任意一个)命令:
/usr/bin/sudo /usr/bin/killall Finder /System/Library/CoreServices/Finder.app
或者,只运行这个:/usr/bin/sudo /usr/bin/killall Finder
或者,只运行这个:sudo killall Finder
然后 Finder 将自动启动,并且所有隐藏的文件和文件夹将默认开始在 macOS Finder 中显示给用户。

● 在 macOS Finder 或 macOS 中的任何其他文件浏览窗口中,用户也可以同时按下以下三个按钮一次以显示所有隐藏的文件/文件夹:‌
[Command⌘] + [Shift⇧] + [.>]
如果用户再次按下上述三个按钮,文件浏览窗口将隐藏隐藏的文件/文件夹。

● 默认情况下,在 macOS 中,Finder 会隐藏大部分文件扩展名。但我们需要查看所有文件的扩展名以查看完整文件名,以便我们能够确定且不犯错误。要查看所有文件的扩展名,请执行以下步骤:‌
在 macOS 中 > 启动 “Finder” 应用程序 > 转到主菜单 > Finder > Preferences > Advanced > 选择 Show All Filename Extensions 选项。

C. 安装包管理器:‌
在 macOS 中安装任意一个(第三方)包管理器软件:
(1) Homebrew, 或 (2) MacPorts, 或 (3) pkgsrc。

注意/警告:‌ 通常大多数时候,使用来自主要/原始作者/开发者的(源码或二进制)软件包比下一级(即:下游)软件包分发者(例如:操作系统/发行版开发者、计算机制造商等)分发的软件包要好得多。并且通常大多数时候,操作系统/发行版开发者或计算机制造商分发的软件包比第三方包管理器维护者分发的软件包要好。但通常操作系统/发行版开发者或计算机制造商不会更新其预包含的软件包,或使用较旧版本,或不包含用户获取其他/相关软件包(来自操作系统/发行版开发者或计算机制造商)的选项。因此,在这种情况下,次优选择是:通过安全连接从原始作者的网站为您的操作系统/发行版获取(源码/二进制)软件包。(软件包的源码需要编译以构建软件包的二进制/可执行文件)。如果原始作者仅分享源码,则意味着作者希望您编译源码。因此,您的下一个最佳选择是:在您对源码进行补丁以使其与您的操作系统/发行版兼容并可编译后,编译从原始作者/开发者处获取的源码。编译过程构建软件包的二进制文件等。如果之前的步骤对您来说不可能(因为”打补丁”需要软件开发、操作系统/发行版平台和硬件平台相关知识等),那么在这种情况下,使用第三方包管理器可能是必要的。一些(第三方)包管理器默认下载软件包的源码(和依赖项/先决条件)并在您的操作系统/发行版中自动编译以创建/构建二进制文件。通常,软件包的维护者会对原始源码进行补丁,以使其适合在目标操作系统/发行版中编译/运行。一些(第三方)包管理器下载的是已经为您的操作系统/发行版打好补丁并预构建的二进制文件。当二进制文件在您自己的操作系统/发行版中正确编译和构建时,这比快速直接下载(预构建的)二进制文件更值得信赖且更好。”信任”比”快”/”慢”更重要、更安全、更可靠。macOS 有一个名为 App Store 的原生包管理器,它有各种或太多由 macOS 开发者 Apple 设置的不公平限制和壁垒,不允许各种类型的开源应用程序等,这就是为什么有时我们需要使用第三方包管理器。您绝不能从任何非原始作者网站或帖子下载、编译和使用源码或二进制文件。要么通过安全/加密连接从原始作者的网站下载源码/二进制文件,‌或者‌,您必须使用基于 OpenPGP/GPG/PGP 的身份验证来确保下载的源码/二进制文件确实是由实际原始作者发布的。包管理器工具内部包含选项,以便为任何下载使用(某种形式的)身份验证和验证。

  1. Homebrew:‌
    它是适用于 macOS 等的开源且免费的(第三方)包管理器。Homebrew 是在 MacPorts 包管理器(以前称为 DarwinPorts)之后 7 年构建的。

● 注意 / 警告 / 警告:‌ homebrew 是开源包管理器,但此工具使用 Google Analytics 收集使用遥测数据。如果您使用 homebrew:请使用选择退出选项/命令,
brew analytics off
或通过设置
export HOMEBREW_NO_ANALYTICS=1

  1. MacPorts:‌
    它是适用于 macOS 等的开源且免费的(第三方)包管理器,并且它不会窃取您的使用/私人数据。MacPorts 指南。它可以获取源码或二进制文件或两者(对于大多数软件包)。下载源码后,它可以在您的操作系统/发行版中自动编译以创建/构建值得信赖的二进制文件。MacPorts 是在 homebrew 之前 7 年创建的。wp.

● 下载/获取 MacPorts 安装程序 dmg/pkg 文件,安装它。更多信息在此。‌

● 在安装 MacPorts 之前,您的 ~/.bash_profile 文件(在您的主目录内)可能看起来接近这样:‌

text
Copy Code

.bash_profile for BASH

PROMPT_COMMAND=update_terminal_cwd

PS1=’\h:\W \u\$ ‘
PS2=’> ‘
PS4=’+ ‘
PATH=”/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin”
export PATH

● MacPorts 安装程序网页将指示您将 macports 包管理器可执行文件的位置添加到 PATH 变量的末尾,如下所示:‌
PATH=”$PATH:/opt/macports/bin:/opt/macports/sbin”

在您手动将上述行添加到 ~/.bash_profile 文件后,它将如下所示:

text
Copy Code

.bash_profile for BASH

PROMPT_COMMAND=update_terminal_cwd

PS1=’\h:\W \u\$ ‘
PS2=’> ‘
PS4=’+ ‘
PATH=”/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin”
PATH=”$PATH:/opt/macports/bin:/opt/macports/sbin”
export PATH

您可以使用此命令编辑 ~/.bash_profile 文件:sudo nano ~/.bash_profile

● 当 MacPorts 安装后,安装程序会将存储 macports port 软件包可执行文件的位置添加到 ~/.bash_profile 文件内的 PATH 中。通过这种方式,在您登录后,您的 macOS 用户帐户可以找到并使用已安装的 macports port 软件包文件。但我们必须稍微更改它。‌

以下是您通常在 ~/.bash_profile 文件中看到的内容(在安装 macports 后):

text
Copy Code

.bash_profile for BASH

PROMPT_COMMAND=update_terminal_cwd

PS1=’\h:\W \u\$ ‘
PS2=’> ‘
PS4=’+ ‘
PATH=”/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin”
PATH=”$PATH:/opt/macports/bin:/opt/macports/sbin”

Your previous /Users//.bash_profile file was backed up as /Users//.bash_profile.macports-saved_2021-08-29_at_16:38:31

MacPorts Installer addition on 2021-08-29_at_16:38:31: adding an appropriate PATH variable for use with MacPorts.

export PATH=”/opt/local/bin:/opt/local/sbin:$PATH”

Finished adapting your PATH environment variable for use with MacPorts.

● 将上述代码更改为以下代码:‌

text
Copy Code

.bash_profile for BASH

PROMPT_COMMAND=update_terminal_cwd

PS1=’\h:\W \u\$ ‘
PS2=’> ‘
PS4=’+ ‘
PATH=”/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin”
PATH=”$PATH:/opt/macports/bin:/opt/macports/sbin”

Your previous /Users//.bash_profile file was backed up as /Users//.bash_profile.macports-saved_2021-08-29_at_16:38:31

MacPorts Installer addition on 2021-08-29_at_16:38:31: adding an appropriate PATH variable for use with MacPorts.

export PATH=”/opt/local/bin:/opt/local/sbin:$PATH”

export PATH

Finished adapting your PATH environment variable for use with MacPorts.

在上面,我们已从 PATH 中禁用了基于 MacPorts 的 port 软件包位置,但 MacPorts 包管理器本身的位置保留在 PATH 中。”PATH” 是一个基本的环境变量,它指示查找特定(可执行)程序的目录/文件夹的顺序。我们所做的更改将允许新安装的(MacPorts)软件包与其他不需要使用它们的软件保持隔离。这些(MacPorts)软件包是 OpenWRT 开发/构建所必需的,因此我们将创建一个单独的可执行文件(env.sh)来加载 PATH(和其他构建环境变量),该文件仅适用于在 shell 管理器的特定 shell 选项卡中使用,用于 openwrt 构建/开发目的。有关创建此 env.sh 文件的详细信息,请参见下面的步骤/部分 F。

MacPorts 用户提示:‌

搜索软件包:port search –name –glob ‘pkgName
查看软件包信息:port info pkgName
查看软件包需要哪些依赖项:port deps pkgName
安装软件包:sudo port install pkgName

  1. pkgsrc:‌
    它是适用于 NetBSD Unix 操作系统的开源且免费的(第三方)包管理器,但也可以被其他操作系统使用,包括 macOS/Darwin。它可以获取二进制软件包。下载:dev, 源码:gh, 更多信息:wp.

警告:‌ macOS 在 /etc/paths 文件中保留默认的 PATH,但请勿编辑/更改它,因为此类更改会影响整个或大部分 macOS 系统。我们只需要为 1 或 2 个 shell 实例更改构建环境,而不是为整个 macOS 系统,也不是为 macOS 中的所有其他应用程序。

D. 创建专用的区分大小写的文件系统:‌
为 OpenWRT 构建/编译目的创建一个专用的区分大小写的文件系统:

● 我们将使用一个 sparsebundle 来允许我们拥有一个区分大小写的文件系统。‌

● 您提供的大小将是用于处理 OpenWrt 的卷的最大大小。在终端 shell 实例中执行以下命令:‌

text
Copy Code
cd ~
hdiutil create -size 20g -type SPARSE -fs “Case-sensitive HFS+” -volname OpenWrt OpenWrt.sparseimage
hdiutil attach OpenWrt.sparseimage

上面的命令 cd ~ 将开发者用户带入 macOS 中用户帐户的 HOME 目录,然后在那里创建 OpenWrt.sparseimage 文件。但是,如果您想在不同的目录中创建 SPARSE 映像文件,请更改 cd ~ 行并进入您首选的卷/目录。

● 可选/信息性:‌

如果您想在创建后打开 OpenWRT 卷(也称为:驱动器,磁盘),则在上面使用以下命令作为第三个命令行:
hdiutil attach OpenWrt.sparseimage -autoopenrw
重启后,如果您的 macOS 中没有可用的 OpenWRT 卷,则运行:cd ~ && hdiutil attach OpenWrt.sparseimage -autoopenrw
如果您想始终保持 OpenWRT 卷处于连接状态,则:cd ~ && sudo hdiutil attach OpenWrt.sparseimage -notremovable -autoopenrw
如果您想分离(即:卸载)OpenWRT 卷,则:hdiutil detach /Volumes/OpenWrt
关于 hdiutil 的更多信息在此。

E. 转到 OpenWRT 构建卷:‌
在终端中使用以下命令进入 OpenWRT 构建卷:
cd /Volumes/OpenWrt

F. 创建位置指示器和构建环境文件:‌
● 在 /Volumes/OpenWrt 内创建一个名为 env.sh 的文件,以指示已安装软件包的位置。它还将帮助我们在 shell 管理器软件(如 Terminal)的特定 shell 选项卡/实例中创建 openwrt 构建友好的环境。‌

这是为了允许使用来自包管理器(我们将在下一步安装)的软件包,而不是 macOS 提供的软件包。

根据您的包管理器,请遵循以下适当部分之一:

● 对于 x86_64 Apple 硬件,并且当您有 MacPorts 包管理器时,请使用以下内容创建 env.sh 文件,并将其保存在 /Volumes/OpenWrt 位置:‌

env.sh‌

text
Copy Code

!/opt/local/bin/bash

PS1=’\h:\W \u\$ ‘;
PS2=’> ‘;
PS4=’+ ‘;

Bring PATH lines from the ~/.bash_profile file into below:

PATH=”/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin”
PATH=”$PATH:/opt/macports/bin:/opt/macports/sbin”

Adding path of macports port packages, in ahead of others:

PATH=”/opt/local/libexec/gnubin:/opt/local/bin:/opt/local/sbin:/opt/local/libexec:/opt/local/x86_64-apple-darwin19.6.0/bin:$PATH”;

Load PATH into currently running shell:

export PATH;

Load other environment variables:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk7-zulu/Contents/Home

使用此命令将 env.sh 文件变为可执行的 shell 脚本文件:chmod +x /Volumes/OpenWrt/env.sh

对于 MacPorts,‌ 使用此命令在您的主目录 ~/ 中创建 MacPorts.sh 文件:sudo nano ~/MacPorts.sh

在您的 ~/.bash_profile 文件中找到 PATH 变量行,并添加到以下内容中,然后从以下复制所有内容并粘贴到 ~/MacPorts.sh 文件中。您也可以将以下代码下载为文件,然后更改上面的 2 个 PATH 变量,以匹配您 ~/.bash_profile 文件内的 PATH:

MacPorts.sh‌

text
Copy Code

!/opt/local/bin/bash

PS1=’\h:\W \u\$ ‘;
PS2=’> ‘;
PS4=’+ ‘;

Bring PATH lines from the ~/.bash_profile file into below:

PATH=”/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin”
PATH=”$PATH:/opt/macports/bin:/opt/macports/sbin”

Bring last PATH line from the /Volumes/OpenWrt/env.sh file into below:

PATH=”/opt/local/libexec/gnubin:/opt/local/bin:/opt/local/sbin:/opt/local/libexec:/opt/local/x86_64-apple-darwin19.6.0/bin:$PATH”;

Load PATH into currently running shell program:

export PATH;

Load other environment variables:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk7-zulu/Contents/Home

使用此命令将 MacPorts.sh 文件变为可执行的 shell 脚本文件:chmod +x ~/MacPorts.sh

● 对于 x86_64 Apple 硬件,并且当您有 homebrew 时,请使用以下内容创建 env.sh 文件:‌

text
Copy Code
PATH=”/usr/local/opt/make/libexec/gnubin:$PATH”
PATH=”/usr/local/opt/gnu-getopt/bin:$PATH”
PATH=”/usr/local/opt/gettext/bin:$PATH”
PATH=”/usr/local/opt/coreutils/libexec/gnubin:$PATH”
PATH=”/usr/local/opt/findutils/libexec/gnubin:$PATH”
export PATH

● 对于 arm64(Apple Silicon (M1))Apple 硬件,并且当您有 homebrew 时,请使用以下内容创建 env.sh 文件:‌

text
Copy Code
PATH=”/opt/homebrew/opt/make/libexec/gnubin:$PATH”
PATH=”/opt/homebrew/opt/gnu-getopt/bin:$PATH”
PATH=”/opt/homebrew/opt/gettext/bin:$PATH”
PATH=”/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH”
PATH=”/opt/homebrew/opt/findutils/libexec/gnubin:$PATH”
export PATH

● 可选:‌
您可以在需要更多关于 PATH 变量或其他包管理器相关信息时查看 homebrew 官方页面或 MacPorts 指南。

将 env.sh 文件变为可执行的 shell 脚本文件:chmod +x /Volumes/OpenWrt/env.sh

G. 安装必要的软件包:‌
通过包管理器安装必要的软件包,这些软件包有助于构建 openwrt 组件。在终端的 shell 实例/选项卡中使用以下命令。注意:软件包将安装在 macOS 默认卷内,而不是 /Volumes/OpenWrt 内。

根据您的包管理器,请遵循以下适当部分之一:

● 如果您有 homebrew 包管理器,则运行此命令:‌
brew install coreutils findutils gawk grep gnu-getopt gnu-tar wget diffutils git-extras quilt svn make ncurses pkg-config
在上面,homebrew 命令‌不包含‌此处提到的先决条件软件包。

● 如果您有 MacPorts 包管理器,则运行以下 2 个命令:‌

text
Copy Code
source ~/MacPorts.sh
sudo port install libiconv gettext-runtime coreutils findutils gwhich gawk zlib pcre bzip2 ncurses grep getopt gettext-tools-libs gettext diffutils sharutils util-linux libxslt libxml2 help2man readline gtime gnutar unzip zip lzma xz libelf fastjar libusb libftdi0 expat sqlite3 openssl3 openssl kerberos5 dbus lz4 libunistring nettle icu gnutls p11-kit wget quilt subversion gmake pkgconfig libzip cdrtools ccache curl xxhash lib rsync libidn perl5 p5.28-xml-parser p5.30-xml-parser p5-extutils-makemaker p5-data-dumper boost-jam boost boost-build bash bash-completion binutils m4 flex intltool patchutils swig git-extras git openjdk17 openjdk7-zulu luajit libtool glib2 file python27 python310 libzzip mercurial asciidoc sdcc gnu-classpath

在上面,MacPorts 命令‌包含‌此处提到的先决条件软件包。所有这些软件包最初使用的空间:4,190,442,792 字节(磁盘上 2.57 GB)对应 129,623 个项目,(截至 2022 年 3 月 11 日)。注意:由于不同的软件包由其开发者、发布者、采用者或维护者不断修改和改进,因此它们占用的空间大小和项目计数在您计算机的不同时间会有所不同。

● 通过 MacPorts 安装的可选工具:‌

如果您需要 picocom 工具通过串行适配器/电缆与路由器通信,则:sudo port install picocom
如果您需要最后一个稳定的 openssh(即:ssh)、sftp、scp 工具用于安全通信或文件传输,则:sudo port install openssh
如果您需要使用最后一个稳定的 telnet、ftp、rsh、rlogin、tftp 工具以及相应的守护进程/服务器,则:sudo port install inetutils
如果您需要其他类型的捆绑软件包,请查看此处:。
如果您需要其他 TFTP 守护进程/服务器(tftpd),那么您可以尝试以下。TFTP 服务器允许从路由器接收文件,或允许(变砖的)路由器从 TFTP 服务器启动等:sudo port install tftp-hpa
如果您需要这些类型的工具,(更多信息:),则:sudo port install arm-elf-binutils i386-elf-binutils m68k-elf-binutils mips-elf-binutils x86_64-elf-binutils

H. 可选步骤:启动构建友好的 shell:‌
macOS 默认使用一个非常旧版本的 bash shell。因此,我们能够/应该启动一个构建/编译友好的、常见的最新+稳定或近期版本的 bash shell,在 macOS 终端的特定选项卡内,因为这样的近期版本可以被大多数开发者用户获取和使用。shell 管理器软件 Terminal 可以通过使用多个 Terminal 选项卡来运行多个 shell 实例。选择一个(或多个)Terminal 选项卡用于 openwrt 构建目的,然后运行以下命令以拥有相同(最新+稳定)的构建环境。

● 如果您安装了新的 bash 软件包,则在 Terminal 的特定选项卡内启动新的 bash shell,(当您有基于 MacPorts 的 bash 软件包时),使用此命令:‌
exec /opt/local/bin/bash

● 可选:‌

使用此命令在 macOS 中批准/允许新的 bash shell:echo “/opt/local/bin/bash” | sudo tee -a /private/etc/shells
如果您想始终继续使用新的 bash,则:单击顶部苹果  菜单栏中的苹果符号 > System Preferences… > Users & Groups > 解锁窗格 > 按住 Control 键单击您的用户名 > 选择 Advanced Options… > 然后将 Login shell 更新/更改为 /opt/local/bin/bash > 确定。

I. 加载构建环境:‌
我们需要将构建软件包位置指示器文件作为 shell 环境加载。OpenWRT 开发(即:构建、编译)是在一个合适的(即:构建友好的)shell 环境中完成的。因此,我们必须通过将构建软件包位置指示器文件 env.sh 加载到其中一个 Terminal shell 环境选项卡中,以创建那个 openwrt 构建友好且合适的 shell 环境,从而允许 openwrt 构建命令找到我们通过包管理器安装的软件包。

在开发(即:构建、编译)时,运行以下命令来设置构建友好的 PATH(和其他)变量。这使您的系统保持干净状态,无需创建符号链接。
source /Volumes/OpenWrt/env.sh

可选:‌ 因此,下次或重启后,当您想要进入 openwrt 构建模式时,则在您拥有基于 MacPorts 的 bash 软件包时,在 Terminal 的特定选项卡内运行以下 2 个命令:

text
Copy Code
exec /opt/local/bin/bash
source /Volumes/OpenWrt/env.sh

J. 构建:‌
现在正常进行,(即,开始遵循父级/上一页中显示的构建相关的其他步骤/过程)。

其他工具:‌
一些用户可能需要以下部分工具。

为 Broadcom (BCM) 43xx 芯片组开发 openwrt 固件的用户,需要这个 b43-fwcutter 工具从固件中提取无线驱动程序。‌
更多信息在此。

包管理器 homebrew 有此工具,而 MacPorts 没有。

MacPorts 用户‌ 可以获取源码[1,2,3,4] 并编译,或从 FreeBSD pkg 获取。

Golang:‌ 对于 darwin/arm64 和 linux/aarch64 golang 软件包(feed “packages”)golang C-bootstrap 方法不起作用,但可以使用外部 golang 引导程序。在 MacOS arm64 上,最简单的方法是使用 brew 安装 golang,并使用已安装的 golang 作为引导程序:
brew install golang
然后在 .config 文件中设置 CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=”/opt/homebrew/opt/go/libexec”

可选工具:‌
可选工具、驱动程序、软件等,适用于 macOS,以协助构建/编译过程,并提高安全性。

除非您特别需要此类工具/应用程序/实用程序来协助您的构建相关工作,否则无需安装这些。以下是一些与 openwrt 软件代码构建、测试、使用和诊断相关的可选/额外工具的小列表,以及一些与网络设备测试/诊断相关的可选/额外工具列表,以便在 macOS(Apple Macintosh 操作系统)和 Apple 硬件上运行/使用。更多信息,请前往 wp。

● XQuartz(dev, wp, src, dnld):‌ 它允许跨平台(GNU-Linux 等)应用程序/工具(这些工具是为使用 X11 GUI 而开发的),以便在 macOS 上运行并使用 macOS 的原生 Quartz GUI 等。许多 GUI 应用程序/工具需要这个。它是开源工具。

● PeaZip(dev, dnld, src, wp, comparison):‌ 它是一个免费且开源的归档器(zip, compress)和解归档器(unzip, decompress)应用程序/工具。基于 GUI。允许创建:7Z, ARC, Brotli, BZ2 (BZip), GZ (GZip), PAQ/ZPAQ, PEA, QUAD/BALZ/BCM, sfx, TAR, WIM, XZ, ZPAQ, ZIP, Zstandard 等,并且 peazip 允许打开和提取 200+ 文件类型:ACE, CAB, DEB, ISO, RAR, UDF, ZIPX 等。请勿从任何其他网站下载此应用程序。

● GnuPG for OSX(dev, dnld):‌ 验证文件/消息的真实性。GnuPG 也称为 GPG。我们需要这个工具来验证/验证下载的文件(或消息),以查明文件(或消息)是否确实是实际文件(或消息)创建者/作者/开发者实际发布/共享/创建/发送的,因此这个工具将指示/告诉我们接收到的文件(或消息)是否在文件/消息传输路径的中间或在文件/消息传输路径期间被某人或某设备修改/更改/滥用/损坏,或者这个工具将向我们指示在文件/消息传输路径期间未进行任何修改。文件(或消息)的实际创建者/开发者共享他们的(GnuPG/GPG 或 PGP 或 OpenPGP 基于的)加密数字公钥文件作为 pub 文件或带有 public 的 asc 文件。获取此类公钥最值得信赖的方式是:前往 KSP 或会议并会见实际的文件/消息创建者/开发者并直接获取公钥文件,(或者,下一个(稍微不那么)值得信赖的解决方案是:使用 WoT 并检查公钥组件以进行比较和验证公钥的真实性)。文件/消息创建者/开发者使用他们的私钥对主文件(或主消息)进行签名,这会为主文件(或主消息)创建一个唯一的签名文件,然后文件/消息创建者/开发者与公众共享主文件(或主消息)和签名文件。这个(GnuPG)工具可以使用签名文件、公钥文件和主文件(或主消息),并且可以指示主文件(或主消息)是否确实是由实际持有该公钥的人发布的,或者不是。为这个工具安装一个 GUI 前端/包装器。

了解系统将通过 PATH 环境变量找到并使用的已安装 gpg2 的目录位置,运行:which gpg2
GnuPG 工具也可以通过 MacPorts 包管理器加载,当您运行此命令时:sudo port install gnupg2

GpgFrontend(dev, src, dnld):‌ 开源、免费的工具,用于验证文件、验证消息等。它包含 OpenPGP 加密工具,并且也可以作为 GnuPG 的前端/包装器运行。参见上面的 GnuPG for OSX 条目。

● DevUtils(dev, dnld, appstore):‌ 它具有各种功能来执行各种开发相关的活动。应用程序是免费且开源的,但源代码需要付费。

各种用于构建、部署等的工具/应用程序在此:。

● TimeUTC(AppStore):‌ 它可以在您的顶部苹果  菜单栏中添加第二个日期和时钟,以显示当前的 UTC 时间和日期。免费软件。

● PumpKIN(dev, src2, dnld):‌ 开源、免费且基于 GUI。它是一个 TFTP 服务器和客户端应用程序,(具有内置的 TFTP 服务器和客户端功能)。适用于 macOS(和 Windows)。它经过测试,可以在 macOS Mountain Lion 上运行。TFTP 可能被滥用/利用来做有害的事情,因此请将其防火墙保护或在您完成使用此应用程序后禁用它,并且在您暂停处理其他事情时也禁用它。不要让它保持运行。更多信息在此。

● FileZilla(dev, dnld, src, comparison):‌ 它是 FTP、基于 TLS 的 FTP (FTPS)、SFTP SSH、SFTP 的客户端应用程序。开源、免费且基于 GUI。请勿从任何其他网站下载此应用程序。

● ProFTPD(dev, dnld, src, comparison):‌ 用于 FTP / FTPS / SFTP 服务器。开源、免费。基于 CLI。为这个工具获取一个 GUI 前端/包装器。
并且也为 ProFTPD 获取基于 Web(GUI)的管理界面应用程序 proFTPd-admin(从此处)。当您暂停处理其他事情时,不要保持此应用程序运行。它可能被滥用/利用来做有害的事情。

● Github Desktop for Mac(dev):‌ 允许开发者用户访问、协作和开发软件等,在 Github.com 网站上。基于 GUI 的免费应用程序。

● TextMate(dev, dnld, comparison):‌ 一个文本编辑器。开源且基于 GUI 的免费应用程序。一些功能:多选项卡、多窗口、基于正则表达式的搜索和替换等。

● Kate(dev, dnld):‌ 开源且免费的代码/文本编辑器。

● LuLu(dev):‌ 它是基于 GUI 的、免费的、开源的防火墙应用程序,用于控制 macOS 中应用程序/工具的出站互联网数据流量。

● Loading(dev):‌ 当应用程序/工具正在使用网络时

😩抱歉,出了点小问题,请稍后重试

此条目发表在计算机技术分类目录。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注