Заголовочные Файлы Не Найдены (Неправильный Путь?)

#c #header-files #include-path

Вопрос:

Я пытаюсь скомпилировать программу a в Linux, и программа содержит следующие заголовочные файлы:

 #include <iostream>
#include <vector>
#include "Minuit2/FCNBase.h"
#include "FunctionMinimum.h"
#include "MnMigrad.h"
 

и т.д. Исходный файл находится в

 home/christian/code
 

и все заголовочные файлы находятся в

 /home/christian/root/include/Minuit2
 

Я пытаюсь скомпилировать, выполнив следующую команду:

 g   -I /Minuit2 niminimzationExample.cpp -o niminimzationExample -L/Minuit2/lib -lMinuit2
 

Но я получаю следующее сообщение об ошибке:

 In file included from niminimzationExample.cpp:9:0:
/home/christian/root/include/Minuit2/FCNBase.h:13:10: fatal error: Minuit2/MnConfig.h: No such file or directory
 #include "Minuit2/MnConfig.h"
 

Потому что компилятор не может найти MnConfig.h, который является первым заголовочным файлом внутри FCNBase.h. Я также пытался запустить

 g   -I /home/christian/root/include/Minuit2 niminimzationExample.cpp -o niminimzationExample -L/Minuit2/lib -lMinuit2
 

Но я все равно получаю ту же ошибку. Каков способ записи для включения файлов заголовков?

Спасибо.

Комментарии:

1. Вам нужно добавить родительский каталог #include "Minuit2/FCNBase.h" в путь включения, как это уже есть Minuit2 в пути включения.

2. /Minuit2 это путь к Minuit2 корневому каталогу (не названный каталог root , а корневой каталог файловой системы). Я рекомендую вам использовать полный путь к каталогам. И используйте <> для своих целей.

Ответ №1:

Если ваш заголовок находится по адресу

 /home/christian/root/include/Minuit2/FCNBase.h
 

Ваш #include вариант или компиляции неверен.

В настоящее время вы указываете компилятору на поиск

 /Minuit2/Minuit2/FCNBase.h
 

или

 /home/christian/root/include/Minuit2/Minuit2/FCNBase.h
 

Вы должны указать опцию

 -I /home/christian/root/include
 

Чтобы компилятор выполнял поиск Minuit2/FCNBase.h в каталоге /home/christian/root/include .

Если вы не хотите менять этот параметр, вам следует изменить #include на

 #include "FCNBase.h"
 

Чтобы компилятор выполнял поиск FCNBase.h в каталоге /home/christian/root/include/Minuit2 .