2014-12-19 2 views
1

У меня есть огромные исходники, большинство из них написано на языке Fortran90, однако некоторые части находятся на языке C. Этот код для правильной компиляции требует установки MPI и HDF5. Я установил их сейчас, когда я пытаюсь скомпилировать модель (компиляция не с командой ./compile есть ./install.sh, и она заботится обо всем, включая компиляцию). У меня длинная ошибка и все связано с путём файлов заголовков. Ниже приведена ошибка:Исходный код не может найти заголовочные файлы include?

Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: mpif.h 
Can't find file: stdio.h 
Can't find file: math.h 
Can't find file: stdlib.h 
Can't find file: malloc/malloc.h 
Can't find file: malloc.h 
Can't find file: stdlib.h 
Can't find file: errno.h 
Can't find file: string.h 
Can't find file: ctype.h 
Can't find file: dirent.h 
Can't find file: string.h 

и после этого есть некоторые другие ошибки, которые, по моему мнению, связаны с вышеуказанными ошибками. Я попытался установить PATH в ./bashrc и при поиске, например, найти mpif.h возвращает:

[[email protected] bin]$ locate mpif.h 
    /home/hamid/Downloads/ED-2.1/ED/build/bin/mpif.h 
    /home/hamid/Downloads/ED-2.1/ED/src/mpi/mpif.h 
    /home/hamid/Downloads/mpich-3.1.3/src/binding/fortran/mpif_h/mpif.h 
    /home/hamid/Downloads/mpich-3.1.3/src/binding/fortran/mpif_h/mpif.h.in 
    /home/hamid/Downloads/mpich-3.1.3/src/include/mpif.h 
    /home/hamid/mpich2-optimised/include/mpif.h 

, а также я установить переменную LD_LIBRARY_PATH как:

export LD_LIBRARY_PATH=$MPI_DIR/lib:$LD_LIBRARY_PATH 

Но все-таки кажется, что он не работает. Я предполагаю, что это не просто связано с настройкой пути MPI или HDF, потому что некоторые из них являются заголовочными файлами GCC (C компилятор). Любая идея о том, что может быть проблемой?

+1

Вам нужно использовать опцию '-I' для' gcc', чтобы указать, где найти файлы заголовков. – Barmar

+0

Заголовки не расположены с использованием 'LD_LIBRARY_PATH'. Используйте опцию -I, чтобы указать, в какой каталог (ы) входят ваши заголовки. –

+0

Спасибо, ребята, я не знаю, куда положить -I, так как я упомянул, что компиляция модели не похожа на простую компиляцию с ./compile, make и make install. вместо этого он имеет,/install bash script. в случае интереса [здесь] (https://github.com/EDmodel/ED2/wiki/Quick-start) больше описания, я следую за быстрой установкой. – Ress

ответ

0

Как видно из комментариев, вы можете использовать -I для указания каталога, тогда компилятор найдет .h файлов. Например .:

gfortran -o name.o -c -I/usr/lib/openmpi/include name.f90 

Если вы используете ifort, альтернативой является добавление в каталог к ​​FPATH, возможно:

FPATH=$FPATH:usr/lib/openmpi/include 

Это не работает с gfortran хотя. Я не знаю других компиляторов.