编译构建
#
构建环境在编译构建之前,请确保系统上安装了 go 和 rust 工具链及 C 工具链(C编译器、链接器等)。
#
构建 md-tools获取 md-tools 源代码后,可在源码跟目录执行以下命令进行构建。
cargo build --release
执行命令后,可在 target/release
目录下找到对应的可执行文件。
当然,如果需要构建 debug 模式下的可执行文件,可直接执行 cargo build
命令。
指定 C 编译器
如果编译构建时需要指定 C 编译器,可以使用 CC 环境变量,例如 CC=clang cargo build
指定链接器
如果编译构建时需要指定 C 编译器,可在 cargo 的配置文件中的 target.linker
项中指定链接器,具体参见 https://doc.rust-lang.org/cargo/reference/config.html#targettriplelinker 。
#
交叉编译我们可以利用交叉编译,来将 md-tools 构建到其他的运行平台(如在 Linux 系统中构建可在 winodws 上运行的可执行文件)。
md-tools 采用 C、Go、Rust 混合编写,C 代码和 Go 代码均会编译成静态库,然后和 rust 代码一块链接成为可执行文件。
其中,C 代码会被 cc crates 构建为静态库。可用 CC
环境变量来指定编译器,详细请参考 cc 库的相关文档。
Go 代码会被 Go 编译器编译成为静态库,可利用相关的 Go 环境变量指定目标 CPU 架构、目标操作系统(如GOARCH
、GOOS
)。
例如,在 macOS 平台上,采用 C 编译器 x86_64-w64-mingw32-gcc
,将 md-tools 源码编译到 windows amd64 架构的可执行文件,可使用以下命令:
CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOARCH=amd64 GOOS=windows \ cargo build --target=x86_64-pc-windows-gnu --release
以上命令编译得到的可执行文件将位于 target/x86_64-pc-windows-gnu/release
目录下。
#
关于构建的额外文档关于 md-tools 构建的内容,如若未在本小节描述详尽,可参考 md-tools 代码仓库中的相关文档: https://github.com/misa-md/md-tools/blob/master/README.md#build 。 此外,如若希望查看最新的构建方式,也可参考以上链接所指向的文档。