2017-01-04 11 views
2

Я пытаюсь скомпилировать C++-программу в UNIX, используя CC: Sun C++ 5.11 SunOS_i386. Я создал следующее Makefile.PCC-S-02015, «невозможно открыть файл include»

ORACLE_HOME=/app/ora/local/product/11.2.0.3/db_1 
CC= CC -m64 -library=iostream 

test.cpp : test.pc 
    $(ORACLE_HOME)/bin/proc test.pc code=CPP sys_include=/usr/include cpp_suffix=cpp 

test.o : test.cpp 
    $(CC) -c test.cpp -DDEBUG -DSOLARIS -I$(ORACLE_HOME)/precomp/public 

test.bin: test.o 
    $(CC) -o test.bin test.o -L$(ORACLE_HOME)/lib -lclntsh -lnsl -lsocket -lgen -ldl 

Когда я выполнил Makefile, я получаю следующее сообщение об ошибке ...

#include <iostream> 
.........1 
PCC-S-02015, unable to open include file 

Что мне не хватает? Что еще я могу сделать?

+0

Есть ли в вашем исходном коде инструкции Oracle ProC? Если да, какая часть цепочки сборки отправляет ошибку, 'proc' или' CC'? Если есть сомнения, просто выполните вручную инструкцию из make-файла –

+0

@Rene: похоже, что ошибка связана с предварительным компилятором Oracle ProC. –

+0

Спасибо, я вижу, что тег был добавлен. – Rene

ответ

2

Предполагая, что исходный исходный файл является файлом Oracle Pro * C .pc, ошибка означает, что Pro * C не смог найти ваш файл include. Если у вас нет ошибки FATAL ниже, вызванной этим, ошибка PCC-S-02015 на самом деле является простым предупреждением. Прекомпилятор предупреждает вас о том, что он нашел директиву include, которую он не мог обработать, поэтому он не затрагивается в сгенерированном файле .cpp. В этом случае он будет правильно обработан на следующем этапе сборки.

Проблема, если часто используется позднее символ, определенный в одном из таких файлов, включает (в основном, typedef или эквивалентное макроопределение типа), что приводит к ошибке фатальной компиляции.

В этом случае вы должны объявить включать папки в файле pcscfg.cfg, расположенном по адресу $ORACLE_HOME/precomp/admin или включает в командной строке при вызове proc.

Ссылка: https://lists.debian.org/debian-user/2001/09/msg00273.html - речь идет о Debian, но описывает эквивалентную проблему.

+0

Ниже приведено содержимое pcscfg.cfg sys_include = ($ ORACLE_HOME/precomp/public,/usr/include) sys_include = (/ net/14.96.53.37/devtools/i386/solstudio12.2/prod/include/CC/Cstd) – NJMR

+0

Да, как вы упомянули, я могу игнорировать эти предупреждения. Создаются двоичные файлы. Я выполнил каждую строку в файле make и начал включать каталоги, чтобы скомпилировать ее. – NJMR