Как использовать GCC от Anaconda? Когда я компилирую файлы, он жалуется на отсутствие системных заголовков, таких как stdio.h

Я использую миниконду, чтобы иметь возможность создавать переносимое окружение, которое может переносить собственные зависимости, такие как GCC, в программном приложении.

Я сделал что-то простое, как

conda install gcc
conda install libgcc

и попытался с помощью GCC Конды, чтобы скомпилировать простой файл, как

#include <stdio.h>

int main() {
  print('hai world');
}

который бы жаловался,

fatal error: 'stdio.h' file not found

Я делаю это на своем MacBook и не хочу устанавливать инструменты разработчика Xcode, чтобы получить доступ к gcc и его системным заголовкам, потому что я хочу, чтобы это было как можно более переносимым.

Я также попробовал conda-build с рецептами conda для gcc-4.8, но в итоге я пожаловался, что мне нужен cc (компилятор C), который поставляется с Xcode.app, который я не хочу устанавливать.

Есть ли у вас какие-либо идеи, как использовать gcc с системными заголовками через conda, чтобы я мог компилировать файлы с системными заголовками, такими как stdio.h?

0 ответов

Для меня сработало:

  1. Начните с нуля, установите последнюю версию miniconda. В частности, conda 4.6 переключилась на гораздо лучший решатель SAT для графа зависимостей.
  2. установите для channel_priority значение false (conda config --set channel_priority false)
  3. Минимизируйте набор каналов. Вам, наверное, ДЕЙСТВИТЕЛЬНО нужно толькоdefaults а также conda-forge(при желании можно добавить несколько пакетов из других каналов, см. ниже). Так ты можешь бежатьconda config --add channels defaults; conda config --add channels conda-forge.
  4. Избегайте использования одной массивной среды для различных нужд. Вместо этого создайте среду для каждого проекта / инструмента.

Твой .condarc файл должен выглядеть так:

$ cat ~/.condarc
channels:
  - conda-forge
  - defaults
channel_priority: disabled

Если вам нужно установить пакеты вне defaults а также conda-forge, вам следует попробовать установить только их с префиксом канала и позволить conda взять их зависимости из defaults а также conda-forge, например conda install bioconda::snakemake

Другие вопросы по тегам