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 ответа
- Случай важен, test.c не является test.C.
- gcc фактически примет любой случай.c, если он существует.
- По умолчанию gcc отклоняет файлы без расширений, но Steeldriver показал вам, как это переопределить (что, конечно, не является стандартной практикой).
- gcc может создать вывод для имени, которое вы предоставляете, -o test.out, используя ваш пример. Стандартная пользовательская настройка включает в себя каталог bin в домашнем каталоге, и это обычное место для добавления приватных сценариев, потому что он уже находится в вашей переменной PATH. Например, в ~/bin добавьте файл с именем mygcc, содержащий
gcc -o "$1".out ${1}.c
чтобы скомпилировать ваши файлы в любом месте с помощью новой команды mygcc test Alter в соответствии с вашими потребностями - передайте явные имена исполняемых файлов, передайте полное имя test.c и т. д. - Запуск из локального каталога без./ (as ./test.out) становится возможным благодаря добавлению "." в переменную PATH (для этого отредактируйте.profile в вашем домашнем каталоге)
Файл.profile в вашем домашнем каталоге - это просто текстовый файл, который принадлежит мне, поэтому любой редактор будет работать, но выберите тот, который не будет переносить строки для вас. Переменная PATH обычно устанавливается в нижней части, поэтому вы можете добавить:. до конца существующей строки PATH=... или создайте новую, например
PATH=${PATH}:.
Добавление в конце "безопаснее", чем в начале, поэтому он не может переопределить любые системные программы с таким же именем. Запуск любой несистемной программы влечет за собой некоторый риск (откуда она взялась, что она делает,...?), Но если программа, которую вы создаете (исходная и все), эти риски меньше. Это может стоить удобства для тестирования новых скомпилированных программ, на ваш выбор.
Наконец-то я узнал, что не так с моим, в имени моего файла был пробел, поэтому gcc читал только первое имя файла. Пример: hello world.c читается как hello . это означает, что он не смог найти файл с именем Hello World.c
Надеюсь это поможет!