gcc "нет такого файла или каталога" ошибка при попытке компиляции

Я только что перешел на Ubuntu и сейчас изучаю программирование на C, поэтому, естественно, я попытался скомпилировать некоторый код. Я уверен, что я использую команду правильно (это всего лишь несколько букв, давай), но компилятор продолжает жаловаться на то, что "такого файла или каталога нет", независимо от того, из какого каталога я пытаюсь скомпилировать. Я установил build-essential, и в противном случае, похоже, gcc работает нормально, что может быть причиной этого? Помощь очень ценится.

Изменить: После дальнейшего изучения я понял, что это происходит с файлами.c, которые я создаю с помощью редактора, такого как редактор Ubuntu по умолчанию или Atom. Результат был успешным при использовании команды gedit, но неуспешным при создании того же файла через редактор. Я также сохранил файлы в домашний каталог и запустил ls каждый раз, чтобы убедиться, что они есть, прежде чем пытаться скомпилировать. Вот сообщение об ошибке:

me@My-PC:~$ gcc test.c
gcc: error: test.c: No such file or directory
gcc: fatal error: no input files
compilation terminated.

Edit2: я был идиотом и не сохранял файлы как.c (я предполагал, что установка формата "C" в редакторах сделает это для меня)

2 ответа

  1. Случай важен, test.c не является test.C.
  2. gcc фактически примет любой случай.c, если он существует.
  3. По умолчанию gcc отклоняет файлы без расширений, но Steeldriver показал вам, как это переопределить (что, конечно, не является стандартной практикой).
  4. gcc может создать вывод для имени, которое вы предоставляете, -o test.out, используя ваш пример. Стандартная пользовательская настройка включает в себя каталог bin в домашнем каталоге, и это обычное место для добавления приватных сценариев, потому что он уже находится в вашей переменной PATH. Например, в ~/bin добавьте файл с именем mygcc, содержащий
    gcc -o "$1".out ${1}.c
    чтобы скомпилировать ваши файлы в любом месте с помощью новой команды mygcc test Alter в соответствии с вашими потребностями - передайте явные имена исполняемых файлов, передайте полное имя test.c и т. д.
  5. Запуск из локального каталога без./ (as ./test.out) становится возможным благодаря добавлению "." в переменную PATH (для этого отредактируйте.profile в вашем домашнем каталоге)

Файл.profile в вашем домашнем каталоге - это просто текстовый файл, который принадлежит мне, поэтому любой редактор будет работать, но выберите тот, который не будет переносить строки для вас. Переменная PATH обычно устанавливается в нижней части, поэтому вы можете добавить:. до конца существующей строки PATH=... или создайте новую, например

PATH=${PATH}:.

Добавление в конце "безопаснее", чем в начале, поэтому он не может переопределить любые системные программы с таким же именем. Запуск любой несистемной программы влечет за собой некоторый риск (откуда она взялась, что она делает,...?), Но если программа, которую вы создаете (исходная и все), эти риски меньше. Это может стоить удобства для тестирования новых скомпилированных программ, на ваш выбор.

Наконец-то я узнал, что не так с моим, в имени моего файла был пробел, поэтому gcc читал только первое имя файла. Пример: hello world.c читается как hello . это означает, что он не смог найти файл с именем Hello World.c

Надеюсь это поможет!

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