G error no such file or directory
g++ выдает мне ошибки вида:
foo.cc:<line>:<column>: fatal error: <bar>: No such file or directory
compilation terminated.
То же самое происходит при компиляции C-программ с gcc помощью .
Почему это так?
Ответ
Ваш компилятор только что попытался скомпилировать файл с именем foo.cc. После нажатия номера строки lineкомпилятор находит:
#include “bar”
или
#include <bar>
Затем компилятор пытается найти этот файл. Для этого он использует набор каталогов для просмотра, но в этом наборе нет файла bar.
Как сообщить компилятору, где его найти
g++ есть опция -I. Это позволяет добавлять пути поиска include в командную строку. Представьте, что ваш файл barнаходится в папке с именемfrobnicate, относительно foo.cc(предположим, вы компилируете из каталога, в котором foo.ccон находится):
g++ -Ifrobnicate foo.cc
Вы можете добавить больше путей включения; каждый из указанных вами путей относится к текущему каталогу. Компилятор Microsoft имеет параметр корреляции/I, который работает таким же образом, или в Visual Studio папки можно задать на страницах свойств проекта в разделе Свойства конфигурации -> C / C ++-> Общие-> Дополнительные включаемые каталоги.
Visual studio 2019 for Linux: g++: No such file or directory
Я пишу проект с именем ProCA с настройками по умолчанию в Visual Studio 2019 и добавляю файл в локальный каталог:
\repo\ProcA\src\base\task.cpp
Когда я компилирую исходный файл, я обнаруживаю, что файл скопирован в нужное место на удаленном компьютере Ubuntu: ~/projects/ProcA/src/base/task.cpp
Но компилятор возвращает ошибку:
>g++ : error : /home/tommy/projects/ProcA/task.cpp: no such file or directory
Понятно, что компилятор g ++ пытается найти файл в верхнем каталоге.
Кто-нибудь может сказать мне, как настроить IDE для решения проблемы?
Большое спасибо.
Ответ
При сборке исходные файлы на вашем компьютере для РАЗРАБОТКИ копируются на компьютер Linux и компилируются там. Я предлагаю вам обратиться к источникам копирования для настройки проекта Linux. Вы можете добавить этот файл .cpp с помощью дополнительных источников для копирования, просто щелкните правой кнопкой мыши проект и выберите “Свойства”> “Копиисточники”> “Общие”> “Дополнительные источники” для копирования и введите значение, возможно, вот так:
\repo\ProcA\src\base\task.cpp :=~/projects/ProcA/task.cpp
Более подробная информация о том, как использовать task.cpp:
#include “task.cpp”
Надеюсь это поможет. С наилучшими пожеланиями.