You need to enable JavaScript to run this app. NixOS 21.05下QtCreator编译Qt5应用找不到crt1.o如何解决
优惠活动
大模型
产品
解决方案
定价
更多

NixOS 21.05下QtCreator编译Qt5应用找不到crt1.o如何解决

问题原因

这个错误是链接器无法找到glibc提供的C运行时启动文件crt1.o、crti.o导致的。NixOS没有按照FHS标准把系统库放在/usr/lib等全局路径下,QtCreator默认的构建配置没有正确读取nix-shell环境下的库路径变量,就会出现找不到文件的问题。

解决方案

步骤1:完善shell.nix配置

在你现有shell.nix中补充依赖和环境变量配置,示例如下:

{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
  buildInputs = with pkgs; [
    qt5.full
    qtcreator
    stdenv.cc.cc.lib
    glibc
    pkg-config
  ];
  # 向链接器暴露glibc库路径
  NIX_LDFLAGS = "-L${pkgs.glibc}/lib";
  # 强制qmake使用nix环境下的编译器
  QMAKE_CC = "${pkgs.stdenv.cc}/bin/gcc";
  QMAKE_CXX = "${pkgs.stdenv.cc}/bin/g++";
  QMAKE_LINK = "${pkgs.stdenv.cc}/bin/g++";
}

步骤2:调整QtCreator项目构建配置

  1. 重新进入nix-shell并启动QtCreator
  2. 打开对应项目后,依次点击左侧「项目」->「构建」->「构建环境」
  3. 确认构建环境选择「继承系统环境」,不要勾选「清除系统环境」选项
  4. 右键点击项目名,选择「清理」,再选择「执行qmake」,之后重新构建即可。

可选验证步骤

如果仍有问题,可以先在nix-shell终端中直接执行以下命令,验证编译环境是否正常:

qmake
make -j$(nproc)

如果命令行编译正常,仅QtCreator内编译报错,重新检查QtCreator的构建环境配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 17:24:01