getenv (cc) возвращает NULL, почему?

Я изучаю C и наткнулся на cc в оболочке bash, т.е. всякий раз, когда я make исходные файлы, я вижу эту команду.

Значит начал разбираться, начал с gcc --help, но не смог найти в справке вариант cc. Итак, начал бродить по сети и наткнулся на сообщение. Во втором ответе говорится, что cc является переменной среды и часто указывает на /usr/bin/gcc в системах Linux.

Я использую дистрибутив Linux, и когда я печатаю возвращаемое значение из getenv("cc"), я получаю NULL. Почему это происходит?


person Naresh    schedule 31.08.2016    source источник
comment
попробуйте запустить env в оболочке, в которой вы запускаете свою программу C. Вы поняли эту cc переменную? CC - это автоматическая переменная из gnu make: gnu.org/software /make/manual/html_node/Implicit-Variables.html   -  person Aif    schedule 31.08.2016
comment
Нет, он говорит, что CC - это переменная среды. Не cc.   -  person Thomas Padron-McCarthy    schedule 31.08.2016


Ответы (3)


cc обычно не является переменной среды. Обычно существует символическая ссылка /usr/bin/cc, указывающая на gcc.

person aschepler    schedule 31.08.2016

"cc" - это компилятор c (исполняемый файл), он не отображается как переменная среды ... getenv будет печатать переменные env

person john.jansen    schedule 31.08.2016

Цитата cc:

cc - это общее имя исполняемого файла или драйвера компилятора C. Это значение по умолчанию для переменной make $ (CC).


Потому что, как указано в ref:

Если указанное имя не может быть найдено в среде вызывающего процесса, должен быть возвращен нулевой указатель.


Более того, если вы запустите env на терминале, вы увидите cc? Не совсем! Вот почему вы получаете указатель NULL. Поскольку это не похоже на переменную среды ..


Я считаю, что cc, который вы упомянули, в вашем make-файле выглядит примерно так:

CC=gcc

что-то обычное в Makefiles.

person gsamaras    schedule 31.08.2016