Conda gcc不能取代系统gcc

Conda gcc不能取代系统gcc,gcc,conda,miniconda,Gcc,Conda,Miniconda,我试图在Conda环境中编译一些代码,在这里 以前安装的编译器包gcc\u linux-64 但是,即使在停用和重新激活环境之后, gcc仍然是/usr/bin/gcc 我应该怎么做才能让Conda按预期工作,即使用工具 我可以安装吗?就像其他软件一样,比如git或其他什么 任何帮助都将不胜感激,提前感谢 如果您这样做: export CONDA_BUILD=1 conda activate <name-of-env-in-which-gcc_linux-64-is-installed&g

我试图在Conda环境中编译一些代码,在这里 以前安装的编译器包
gcc\u linux-64

但是,即使在停用和重新激活环境之后,
gcc
仍然是
/usr/bin/gcc

我应该怎么做才能让Conda按预期工作,即使用工具 我可以安装吗?就像其他软件一样,比如
git
或其他什么

任何帮助都将不胜感激,提前感谢

如果您这样做:

export CONDA_BUILD=1
conda activate <name-of-env-in-which-gcc_linux-64-is-installed>

在make文件中,您可以使用类似于
$CC
的变量。

问题是conda安装的gcc编译器的名称。因为它不仅仅是
gcc
,它是一些很长很复杂的事情,例如
x86\u 64-conda\u cos6-linux-gnu-gcc
,它不会覆盖系统可执行文件,即使conda目录在
路径
变量的前面

解决方案是将conda gcc编译器软链接到本地二进制目录中,例如,
ln-s path/to/conda/gcc~/.local/bin/gcc
,然后将其放在
path
变量中系统二进制目录的前面,例如,
导出路径=$HOME/.local/bin:$path
shell的来源,即
~/.bashrc
~/.bash_配置文件
~/.zshrc

然后,这将指向system one之前的conda可执行文件,并且应该具有适当的名称来覆盖它


请记住,如果删除您的环境,或替换/更新安装在其中的gcc,则需要相应地更新软链接。除非你需要很多不同的gcc版本,否则我只会将它安装到你的基本环境中,做软链接,然后再也不要碰它。Hacky,但它可以工作。

我相信可执行文件名为
gcc conda
或类似的东西。请参阅:好的,但是makefile等使用“gcc”而不是“gcc conda”。。。如果Conda不能取代系统gcc,那么用它安装gcc有什么意义?例如,在安装git时,它不是“git-conda”,您通常可以使用环境变量控制Makefile中变量的值。我不知道他们为什么做出这个决定,但可能是因为编译器对系统操作更为重要,替换它(即使将它放在路径的第一位)比其他程序(如git)更有可能导致链接问题等。感谢@darthbith的评论。。。但我觉得很奇怪。有时我想我最好用尼克斯代替康达你说用尼克斯代替康达是什么意思?他们是完全分开的*nix意味着一个操作系统,而Conda只是一个包管理器(可以在任何平台上工作)…我没有导出
Conda_BUILD
,就得到了相同的结果;尽管如此,
gcc
仍然是系统gcc。我没有编写makefile,我宁愿不修改它。是的,gcc将始终保持系统gcc。您需要改用$CC。我刚刚导出了CONDA_BUILD变量以显示激活环境时的详细输出。我遇到了与OP相同的问题。我认为没有必要更改makefile。我认为应该改变gcc。From:“代替gcc,您使用的编译器的可执行文件名类似于x86_64-conda_cos6-linux-gnu-gcc[…]。许多构建工具(如make和CMake)默认情况下会搜索名为gcc的编译器,因此我们设置环境变量以将这些工具指向正确的编译器。[…]conda build为您执行此激活。”。除了没有。@sigvaldm不确定你是否已经解决了这个问题-我刚刚遇到了同样的问题。要在conda env中编译我的c脚本,我发现使用环境定义的env变量调用环境的gcc编译器是可行的:
$gcc-o program.c
。我是C语言的新手,只是在学习hello world;所以制作工具不在我的范围之内;这就是说,如果您希望只使用env编译器而不是系统进行编译,那么env变量虽然可能不直观,但运行良好。谢谢,@skytowsea。是的,我已经把它整理好了,虽然我已经不记得怎么做了。一旦你得到了很多文件和参数,你可能想看看makefile(CMake是下一步)。它将为您执行正确的命令。当您下载第三方软件时,您不想更改他们的文件,因此进入他们的makefile并键入$(GCC)不是一个好的选择。这类文件通常使用变量$(CC)而不是gcc,因此您可以设置它。我不记得我的示例是否没有这样做,或者Anaconda当时是否没有设置$(CC)。无论如何,欢迎来到C世界:)
INFO: activate-binutils_linux-64.sh made the following environmental changes:
+ADDR2LINE=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-addr2line
+AR=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-ar
+AS=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-as
+CXXFILT=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-c++filt
+ELFEDIT=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-elfedit
+GPROF=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-gprof
+LD=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-ld
+LD_GOLD=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-ld.gold
+NM=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-nm
+OBJCOPY=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-objcopy
+OBJDUMP=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-objdump
+RANLIB=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-ranlib
+READELF=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-readelf
+SIZE=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-size
+STRINGS=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-strings
+STRIP=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-strip
INFO: activate-gcc_linux-64.sh made the following environmental changes:
+CC=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-cc
+CFLAGS=-march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix
+CPP=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-cpp
+CPPFLAGS=-DNDEBUG -D_FORTIFY_SOURCE=2 -O2
+DEBUG_CFLAGS=-march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-all -fno-plt -Og -g -Wall -Wextra -fvar-tracking-assignments -pipe -I/include -fdebug-prefix-map=${SRC_DIR}=/usr/local/src/conda/${PKG_NAME}-${PKG_VERSION} -fdebug-prefix-map=${PREFIX}=/usr/local/src/conda-prefix
+DEBUG_CPPFLAGS=-D_DEBUG -D_FORTIFY_SOURCE=2 -Og
+GCC=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-gcc
+GCC_AR=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-gcc-ar
+GCC_NM=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-gcc-nm
+GCC_RANLIB=/root/m3/envs/test/bin/x86_64-conda_cos6-linux-gnu-gcc-ranlib
+LDFLAGS=-Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,-rpath,/lib -L/lib
+_CONDA_PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_x86_64_conda_cos6_linux_gnu