2015-05-20 1 views
3

Я вижу, что тот же вопрос задавался много раз, но моя проблема другая.gcc error пытается выполнить exec 'cc1': execvp: Нет такого файла или каталога при работе с пользователем без полномочий root

Я установил gcc на ubuntu 14.04, и он отлично работает с пользователем root. При попытке компиляции с использованием не суперпользователя он бросает

ошибка GCC: ошибка при попытке EXEC «cc1»: execvp: Нет такого файла или каталог

После того, как я скомпилировать файл пользователь root, пользователь без полномочий root может выполнить файл без каких-либо ошибок, но он не может скомпилировать файл.

Я подозреваю, что есть проблема с правами доступа к файлам, и я проверил разрешения для cc1, а у пользователя root не было разрешения на выполнение в файле.

+0

Это не проблема, связанная с C или C++. Вы должны дать нам больше информации, я не думаю, что «* он не может скомпилировать файл *» достаточно. Название вашего вопроса предполагает, что это проблема с файловым существованием, и ваш вопрос предполагает, что это связано с разрешением. Дайте нам действительно то, что у вас есть. – Eregrith

+0

В заголовке указано сообщение об ошибке, запущенное при запуске gcc. Я объяснил, что файл cc1 существует, и у пользователя есть права доступа к файлу. Скажите, пожалуйста, какие детали вам нужны. –

+1

Возможно, вам захочется скомпилировать компиляцию и посмотреть, с какими проблемами сталкивается система в поиске 'cc1':' strace gcc -c foo.c 2> & 1 | grep cc1' –

ответ

3

Первый способ:

Под root учетной записи с помощью команды:

который НКУ

который cc1

Ls -l $ Вывод предыдущей команды

Он покажет вам, где находится cc1 и gcc и права cc1
Убедитесь, что у вас есть соответствующие права для cc1 файла

Затем под «обычного» пользователя:

который НКУ

Выход which gcc должны быть одинаковыми как для корня.

Если право в порядке и путь к gcc так же, как под root, добавьте PATH к cc1 для пользователя.

Второй способ:

Под root счет:

GCC -v hello_world.c 2> & 1 | grep cc1

И сделать то же самое под «обычной» учетной записью.

Он покажет вам настоящие команды, которые использовались для компиляции.

Сравните их и проверить права и PATH, как и в первом способе


Чтобы добавить использование PATH: export PATH=$PATH:$add_new_path_to_folder_here

-1

В моем случае, эта ошибка была возникающую при попытке скомпилировать обновленную версию FFI, nokogiri и другие драгоценные камни на Ubuntu. gcc -v показал, что я использовал gcc и g ++ 4.8.

Исправление состоит в том, чтобы переключить ссылки на символы gcc/g ++, чтобы использовать 4.9 вместо 4.8.

$ which gcc 
$ ls -ld /usr/local/bin/gcc 
$ sudo rm /usr/local/bin/gcc 
$ sudo ln -s /usr/bin/gcc-4.9 /usr/local/bin/gcc 
$ ls -ld /usr/local/bin/gcc 

Повторите для g ++.

Смежные вопросы