可重现构建
可重现构建()也被称为确定性编译(),这是一个编译软件的过程,能够确保生成的二进制代码(也就是机器码)可以重现。使用确定性编译编译的源代码将始终输出相同的二进制文件。 可重现构建可以作为信任鏈的一部分,这是因为源代码可以签名,这样就可以证明二进制文件是从受信任的源代码编译的。 参考文献
共 19 篇文章
可重现构建()也被称为确定性编译(),这是一个编译软件的过程,能够确保生成的二进制代码(也就是机器码)可以重现。使用确定性编译编译的源代码将始终输出相同的二进制文件。 可重现构建可以作为信任鏈的一部分,这是因为源代码可以签名,这样就可以证明二进制文件是从受信任的源代码编译的。 参考文献
CMake是個一個开源的跨平台自動化建構系統,用來管理軟體建置的程序,並不依賴於某特定編譯器,並可支援多層目錄、多個應用程式與多個函式庫。 它用組態檔控制建構過程(build process)的方式和Unix的make相似,只是CMake的組態檔取名為CMakeLists.txt。CMake並不直接建構出最終的軟體,而是產生標準的建構檔(如Unix的Makefile或Windows Visual C++的projects/workspa…
Microsoft Build Engine(通常简称MSBuild )是一个自由且开源的构建工具集,适用于托管代码以及原生C++代码,是.NET框架的一部分。Microsoft Visual Studio依赖于 MSBuild,MSBuild也依赖于Visual Studio。 概述 MSBuild是一套构建工具,用于帮助软件产品创建流程的自动化,包括编译源代码、打包、测试、部署和创建文档。使用MSBuild可以在不安装Visual …
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。Gradle 构建脚本使用的是 Groovy 或 Kotlin 的特定领域语言来编写的,而不是传统的XML。 当前官方支持的语言为Java、Groovy、Scala、C++、Swift、JavaScript等以及Spring框架。 使用 Gradle 的優勢 自動處理套件相依關係 - 取自 Maven Repos 的概念 自動處理佈署問題 - …
Jenkins是一款由Java编写的开源的持续集成工具。在与Oracle发生争执后,项目从Hudson项目复刻。 Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(例如Apache Tomcat)。它支持软件配置管理(SCM)工具(包括、CVS、Subversion、Git、、和),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。Jenkins…
在计算机编程中,GNU Libtool是一个软件开发工具,它是GNU构建系统的一部份,由一个shell脚本组成,创建它是致力于解决从源代码编译共享库时的软件可移植性问题。它隐藏了编译共享库的命令在计算平台之间的不同。它提供了跨平台同一的一个命令行界面并且它执行这个平台的本地命令。 原理 不同的操作系统以不同方式处理共享库。有些平台根本就不使用共享库。这使得难以让软件程序可移植:C编译器随系统不同而不同,特定库函数在某些系统上缺失,头文件…
GNU Automake是一種編程工具,可以產生供make程式使用的Makefile,用來編譯程式。它是自由軟體基金會發起的GNU計劃的其中一項,作為GNU構建系統的一部分。automake所產生的Makefile符合GNU編程標準。 automake是由Perl語言所寫的,必須和GNU autoconf一併使用。automake包含了以下命令: *aclocal *automake aclocal是個泛用的程式,對於autoconf使…
MASM32也稱為MASM32 SDK,是一種用組合語言開發32位元Windows應用程式的工具包。 MASM32 SDK裡面有各式各樣的工具,都是為了撰寫Windows應用程式所需,它們包含: 組譯器:ml.exe,這是微軟MASM6.x內的組譯器,可升級為6.15版。 連結器:link.exe,這是微軟Visual Studio中能夠生成32位元應用程式的連結器。 編輯器:qeditor.exe,這是Steve Hutchesson…
Meson 是用于自动化构建的自由软件,使用Python语言编写,在 Apache 许可证 2.0版本下发布,主要目标是为了让开发者节约用于配置构建系统的时间。 特性 多平台支持,包括 GNU/Linux、Windows、MacOS、GCC、Clang、Visual Studio等。 多语言支持,包括 C、C++、D、Fortran、Java、Rust等。 构建过程的定义使用对用户非常友好且具有很高可读性的非图灵完备DSL。 为多种操作…
flex(快速詞法分析產生器,)是一種詞法分析程式。它是lex的開放原始碼版本,以BSD許可證釋出。通常與GNU bison一同運作,但是它本身不是GNU計劃的一部份。 歷史 Vern Paxson於1987年以C語言寫作了flex。他參考了Jef Poskanzer為Ratfor寫作的詞法分析器。 外部連結 *
A-A-P,一種用於下載原始碼、編譯以及安裝程式的軟體開發工具程式,類似於UNIX系統上的make程式,只是功能更為強大。它是一個開放原始碼計劃,採用GPL授權,以Python語言寫作,主要開發者是布拉姆·莫勒纳尔。 類似於make程式會讀取一個名叫Makefile的文件,它也會讀取一個叫作recipes的文件,再依照文件上的指示工作。 它有一個使用圖形使用者介面的集成開發環境,名叫Agide。 外部連結 *[http://www.a-…
GNU bison(Bison意为犎牛;而Yacc与意为牦牛的Yak同音)是一个自由软件,用于自动生成语法分析器程序,实际上可用于所有常见的操作系统。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。在新近版本中,Bison增加了对GLR语法分析算法的支持。 GNU bison基本兼容Yacc,并做了一些改进。它一般与flex一起使用。 参考文献 外部链接 [http://www.gnu.org/softw…
Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。默認情況下,它的buildfile(XML文件)名為build.xml。每一個buildfile含有一個和至少一個預設的,這些targets包含許多task elements。每一個task element有一個用來被參考的id,此id必須是唯一的。 build.xml 範例 参见 J…
Make是一个在软件开发中所使用的构建工具,用于自動化建構軟體。 它通过一个名为 Makefile 的文本文件来描述源代码文件之间的依赖关系和构建规则。 Make 会根据这些规则和依赖关系,判断哪些文件需要重新编译,并执行相应的编译命令,以确保最终生成可执行文件或其他目标文件(这些目标被称为“target”)。 大多数情况下,它被用来编译源代码,生成结果代码,然后把结果代码连接起来生成可执行文件或者库文件。 許多現代軟體的開發環境中(如…
Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。Maven也可被用于构建和管理各种项目,例如C#,Ruby,Scala和其他语言编写的项目。Maven曾是Jakarta项目的子项目,现为由Apache软件基金会主持的独立Apache项目。 Maven解决了软件构建的两方面问题:一是软件是如何构建的,二是软件的依赖关系。不同于Apache Ant等早期工具,Maven设定了…
Hudson是用Java编写的一个持续集成(CI)工具。它运行在Servlet容器中(例如Apache Tomcat、GlassFish)。它支持软件配置管理(SCM)工具(包括CVS、Subversion、Git、、和),可以执行基于Apache Ant和Apache Maven的项目,以及任意的shell脚本和Windows批处理命令。Hudson的主要开发者是川口耕介,开发期间就职于昇陽電腦公司。Hudson是在MIT许可证下发布…
Waf,一種用於組建自動化的工具軟體,被用來自動化編譯程式,以及安裝軟體。它由Python寫成,主要維護者為湯瑪士·納吉(Thomas Nagy)。 Waf的原始碼,採用新BSD許可證釋出,是開放原始碼軟體。但是它的文件則採用CC-BY-NC-ND許可證釋出,不允許修改以及使用於商業用途。 外部連結 . 註釋
sbt是一种项目管理及自动构建工具,类似于Apache Maven和Apache Ant。 参考来源
qmake是一個協助簡化跨平台進行專案開發的構建過程的工具程式,Qt附帶的工具之一 。qmake能夠自动生成Makefile、Microsoft Visual Studio 專案檔 和 xcode 專案檔。不管原始碼是否是用Qt寫的,都能使用qmake,因此qmake能用於很多軟體的構建過程。 手寫Makefile是比較困難而且容易出錯,尤其在進行跨平台開發時必須針對不同平台分別撰寫Makefile,會增加跨平台開發複雜性與困難度。qm…