• ベストアンサー

PRO*C コンパイルエラー

現在PRO*CとORACLEを学んでいる初心者です。 PRO*Cを使用したCプログラムを作成し、gccコマンドで プログラムをコンパイルしたんですが、以下のようなコンパイルエラーがでまして、どうしたらいいのかわからず、先に進めない状態です。 # gcc -o viewaddr viewaddr.c -m64 -L$ORACLE_HOME -lclntsh viewaddr.c:139:20: sqlcpr.h: No such file or directory 確かにプログラム上でsqlcpr.hをインクルードしています。 sqlcpr.hを使用したいのですが、認識させるにはどうしたらいいのか教えていただけないでしょうか? 環境はUNIX(SUN)、ORACLE9iを使用しています。 どうかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

gcc のマニュアルを読めばわかるけど「インクルードディレクトリの追加」は -I<ディレクトリ> という形で指定します (もちろん実際には <> は付けません). で, sqlcpr.h がどこにあるかですが, 最悪 find / -name sqlcpr.h で見つけることはできます.

ken6791
質問者

補足

Tacosanさん 回答ありがとうございました。 早速やってみたのですが、 sqlcpr.hは $ORACLE_HOME/precomp/publicの直下にありました。 それでいろいろとやってみたのですが、やはり同じエラーがでます。 たとえば、 #gcc -o viewaddr viewaddr.c -m64 -L$ORACLE_HOME/ -L$ORACLE_HOME/precomp/ -lclntsh -lpublic のような・・・。 実際どうやるのかも多分分かっていないと思います。 具体的にどういうコマンドを書けばいいか教えていただけないでしょうか? 初心者の質問ですいませんが、よろしくお願いいたします。

その他の回答 (2)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

>たとえば、 >#gcc -o viewaddr viewaddr.c -m64 -L$ORACLE_HOME/ -L$ORACLE_HOME/precomp/ -lclntsh -lpublic >のような・・・。 No.2の人も書いてるけど、インクルードの追加は-I(大文字のアイ、エルでなくて)だと思うんだけど、-I(繰り返すけど、大文字のアイ、エルでなくて)はどこにも指定してませんよね? それじゃ上手く行かないのは当然なのでは?

ken6791
質問者

補足

chie65536さん ありがとうございました。 おかげで、メッセージは消えたのですが、次に以下のようなエラーが でて、どうしていいのか分かりません。 #gcc -o ldaddrcsv ldaddrcsv.c -m64 -L$ORACLE_HOME -lclntsh -I /$ORACLE_HOME/precomp/public/ ld: fatal: file /u01/oracle9/DSHome/lib/libclntsh.so: wrong ELF class: ELFCLASS32 ld: fatal: File processing errors. No output written to ldaddrcsv collect2: ld returned 1 exit status このメッセージはどうすればなおるでしょうか? 何が悪いのでしょうか? どなたか教えてください。よろしくお願いいたします。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

コンパイラスイッチに「追加のインクルードファイルのある場所」も指定しないと。

ken6791
質問者

補足

chie65536さん 早速の回答ありがとうございました。 一つ初歩的な質問させてください。 どういういう風に追加すればいいのでしょうか? 具体的に教えていただけないでしょうか? また追加のインクルードファイル(sqlcpr.h)の在処の探し方もおしえていただけないでしょうか? 本当に初歩的な質問ですいませんが、よろしくお願いいたします。

関連するQ&A