我在WSL上运行着Ubuntu 18.x的Nix操作系统。
我使用$ nix-env -i gcc
命令安装了GCC,安装的版本为gcc-7.3.0
。
我试图使用GCC编译一个由Ferret生成的简单CPP文件。但是GCC出现了以下错误:
$ g++ -std=c++11 -x c++ test_1.cpp -o test_1
/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: error: ld returned 1 exit status
看起来我以为Nix会包含与GCC(“build-essential”相当的)常见依赖项,但我认为这并不正确。
使用Nix搜索(“nix-env -qaP 'gcc'”,“nix-env -qaP --description | grep -i gcc”)没有提供太多帮助。
其他帖子提到安装gcc-multilib(apt软件包)。 Nix中唯一提到它的是测试软件包。
$ nix-env -qaP --description | grep -i multilib
nixpkgs.tests.cc-multilib-gcc cc-multilib-test
nixpkgs.tests.cc-multilib-clang cc-multilib-test
我不知道如何搭建构建环境。我找不到任何相关的文档来告诉我需要哪些软件包才能开始工作。这应该是挺简单的事情。
/usr/bin/ld
是一种提示,表明某些配置不正确;Nix不使用/usr
。您是否考虑创建一个Nix表达式,以便可以使用nix build
来编译您的程序? - Emmanuel Rosa$ which ld; /usr/bin/ld; $ which gcc; /home/<user>/.nix-profile/bin/gcc
. - Rebsnix-shell
就可以完成这个操作吗?例如:nix-shell -p gcc_multi
,然后执行gcc <file>
和./a.out
。 - Eugene Triguba