【问题标题】:conda install -c anaconda gcc_linux-64 not being usedconda install -c anaconda gcc_linux-64 没有被使用
【发布时间】:2020-04-04 15:32:08
【问题描述】:

我想在我没有 root 访问权限的服务器上安装更新版本的 gcc。我试过了 conda install -c creditx gcc-7 这是行不通的。然后我发现 conda install -c anaconda gcc_linux-64 实际上安装的是gccv7.3。但是安装成功后,conda环境依然使用系统gcc at /usr/bin/gcc

请帮助我,以便我可以使用我刚刚安装的 gcc v7.3。

【问题讨论】:

  • 你怎么知道/usr/bin/gcc还在使用?您使用什么程序来编译您的 C 代码(make、SCons、CMake 等)?或者你只是在运行gcc name-of-c-file.c?您需要提供更多关于您如何实际运行所有内容的详细信息,否则将很难回答。
  • 也许你可以尝试创造一个环境并激活环境?

标签: gcc anaconda conda gcc7


【解决方案1】:

这里解释:https://docs.conda.io/projects/conda-build/en/latest/resources/compiler-tools.html

1) 编译器包中的所有可执行文件都带有“前缀”。你使用的编译器的可执行文件名不是 gcc,而是类似于 x86_64-conda_cos6-linux-gnu-gcc

2) 许多构建工具(例如 make 和 CMake)默认搜索名为 gcc 的编译器,因此我们设置环境变量以将这些工具指向正确的编译器。

所以如果你运行:

conda create -n cc_env gcc_linux-64
conda activate cc_env
ls $CONDA_PREFIX/bin

你会看到一堆带有前缀名称的编译工具:

c89                                    x86_64-conda_cos6-linux-gnu-ct-ng.config  x86_64-conda_cos6-linux-gnu-gcov-dump  x86_64-conda_cos6-linux-gnu-objdump
c99                                    x86_64-conda_cos6-linux-gnu-dwp           x86_64-conda_cos6-linux-gnu-gcov-tool  x86_64-conda_cos6-linux-gnu-ranlib
x86_64-conda_cos6-linux-gnu-addr2line  x86_64-conda_cos6-linux-gnu-elfedit       x86_64-conda_cos6-linux-gnu-gprof      x86_64-conda_cos6-linux-gnu-readelf
x86_64-conda_cos6-linux-gnu-ar         x86_64-conda_cos6-linux-gnu-gcc           x86_64-conda_cos6-linux-gnu-ld         x86_64-conda_cos6-linux-gnu-size
x86_64-conda_cos6-linux-gnu-as         x86_64-conda_cos6-linux-gnu-gcc-ar        x86_64-conda_cos6-linux-gnu-ld.bfd     x86_64-conda_cos6-linux-gnu-strings
x86_64-conda_cos6-linux-gnu-cc         x86_64-conda_cos6-linux-gnu-gcc-nm        x86_64-conda_cos6-linux-gnu-ld.gold    x86_64-conda_cos6-linux-gnu-strip
x86_64-conda_cos6-linux-gnu-c++filt    x86_64-conda_cos6-linux-gnu-gcc-ranlib    x86_64-conda_cos6-linux-gnu-nm
x86_64-conda_cos6-linux-gnu-cpp        x86_64-conda_cos6-linux-gnu-gcov          x86_64-conda_cos6-linux-gnu-objcopy

这没关系,因为 CC 和 CPP 等环境变量指向要使用的编译器,而 make 等命令知道使用这些变量:

$ echo $CC
/home/builder/anaconda3/envs/cc_env/bin/x86_64-conda_cos6-linux-gnu-cc
$ echo $CPP
/home/builder/anaconda3/envs/cc_env/bin/x86_64-conda_cos6-linux-gnu-cpp

有关环境变量的更多信息,请参阅:https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html

【讨论】:

  • 出于某种原因,cmake 拒绝使用我的 conda 环境中安装的编译器,尽管 echo $CC 指向 conda 安装的编译器。对于未来的自己和其他任何人:定义标志可用于将cmake 指向特定的编译器。例如。 cmake .. -DCMAKE_C_COMPILER=CONDA-PREFIX/envs/ENV-NAME/bin/x86_64-conda-linux-gnu-gcc
猜你喜欢
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 2019-08-03
  • 2022-07-13
  • 1970-01-01
相关资源
最近更新 更多