You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nix入门:如何用Nix的方式执行configure/make编译安装流程?

未适配Nix软件包的标准实操流程

前置说明

你要的./configure && make && make install对应的Nix实现,核心是用Nix内置的stdenv构建抽象层自动处理编译参数、依赖注入、安装路径逻辑,不需要你手动处理$CFLAGS/$LDFLAGS这类变量,也不会污染全局路径。

下面以你提到的ObjFW为例,分两步完成操作:

第一步:快速验证可构建性

如果只是要先测试能不能正常编译安装,不需要长期留存,按以下流程操作即可:

  1. 新建一个空目录,在目录内创建default.nix文件,内容如下:
# 引入当前系统的nixpkgs仓库
with import <nixpkgs> {};
# 调用标准构建工具打包
stdenv.mkDerivation rec {
  # 包名+版本号,可自定义
  pname = "objfw";
  version = "unstable-20240520";
  # 拉取源码,也可以替换为源码压缩包地址
  src = fetchFromGitHub {
    owner = "ObjFW";
    repo = "ObjFW";
    rev = "填写你要构建的commit哈希,比如主分支最新提交的哈希";
    # 哈希获取方式:第一次随便填写假值,比如sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=,构建时Nix会报错给出真实哈希,替换即可
    hash = "sha256-替换为真实的源码哈希";
  };
  # 填写构建依赖,后续构建报错缺什么就补什么
  buildInputs = [
    # 比如需要openssl就加openssl,需要zlib就加zlib,根据实际报错调整
  ];
  # stdenv会自动执行configure、make、make install流程,不需要手动编写,有自定义参数时打开下方配置即可
  # configureFlags = [ "--enable-shared" "--disable-static" ];
}
  1. 执行nix-build命令,当前目录会生成名为result的软链接,指向Nix存储中编译完成的包,直接运行result/bin/下的二进制文件即可测试功能是否正常。

第二步:正式安装到Nix环境

确认构建无问题后,二选一完成安装即可:

  • 临时安装到当前用户环境:在default.nix所在目录执行nix-env -i -f default.nix,安装完成后即可全局调用ObjFW的相关命令
  • 永久加入配置(符合Nix声明式理念,推荐):把上面的derivation内容写入你的Nix配置文件的environment.systemPackages(系统级安装)或者home.packages(用户级安装,使用home-manager时),执行对应的配置生效命令即可。

常见问题处理

  • 构建提示缺少依赖:把缺少的依赖包名添加到buildInputs数组中重新构建即可
  • 非标准构建流程适配:如果软件包不符合标准的configure/make流程,只需在derivation中重写buildPhase、installPhase等阶段的执行逻辑即可,其他部分无需调整

内容的提问来源于stack exchange,提问作者Ingwie Phoenix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:24:04