gcc3.4.2と Oracle InstantClient
職場での話。
以前書いたプログラム(最初に書いたのは 8年ぐらい前)が、RedHat Linux ES4だとエラーになると、同僚にいわれたので、メッセージを確認すると、「too few template-parameter-lists」みたいなエラーが出ている。
他の環境では通っているし、テンプレートのパラメタリストは間違っていないと思うし...
おかしいなぁ。コンパイラが gcc(g++) 3.4.2と新しいから、そのせいかなぁ?
ちょっと腰をすえて調べないと分からなさそうなので、自分の作業用PCの VMWareに 、同じRedHat ES4をインストールしてやってみる...
当然だが、同じエラーが出るので、メッセージをGoogleで調べると、gccの Bugzillaが引っ掛かる。
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17445
おいおいコンパイラのバグかよ。と思って状況の方を確認すると...「Resolution: INVALID」
へ?仕様?仕様なの?特に変な書き方はしていないと思うけど...ダメなんですか?
疑問が増したので、Bugzillaにある議論を読むと、なんか、頭に「template <>」を付けないとだめらしい。
ダメな理由がよく分からないので、ARMとかプログラミング言語 C++のテンプレートのとこを読み直してみる。
でも、やっぱりよく分からない。いまいち納得できないけど、確かにそう変更すればエラーにならないし、古い gcc2.8.1でもエラーにならないから、Bugzillaにあるように修正していく。
# C++のテンプレートは便利なんだけど、仕様が複雑怪奇すぎる...
そうこうしながらコンパイル時のエラーは大体やっつけたものの、最終的には Oracleのライブラリがないとアプリ全体のコンパイルは完了しない。
でも、とりあえず確認のために作った環境に Oracleクライアントのインストールをするのも面倒なので、以前から気になっていた、Oracle InstantClientを試しに入れてみることにする。
まずはOTNのOracle Instant Clientのページからダウンロードする。(OTNのアカウントが必要)
ダウンロードしたZIPを展開して、出来たディレクトリを見てみると、いきなり共有ライブラリファイルがころがっている。
ん?あれ?・・・インストーラーは?ドキュメントは?普通あるべきファイルが見当たらない?
もう一回ダウンロードしたページに戻って探してみると、アーカイブを展開したらインストールしなくても動かせるって書いてある。
・・・動かせるっていったって、tnsnames.oraぐらいは書かないとダメだと思うんだけど、何処に置くんだ?
疑問が増したので、さらにドキュメントを探すと、セットアップガイドという PDFがあったので読んでみる。
・・・「@」の後ろに直接「ホスト名:ポート/サービス名」と書けば tnsnames.oraは不要です。
ふーむ・・・でも、そういえば、逆に最初に Oracle使ったときは、何でいちいち tnsnames.oraにサーバを定義しなければならないんだろ、面倒だなぁと思ったなぁ、慣れというのは恐ろしい... (^^;;;;;;;;;;;
確かにインストール作業が不要なのは楽かもしれないが、これまで書いたアプリの Makefileは、ORACLE_HOMEの場所だけが可変で、その下の構成は固定であることを前提にしていたため、その前提に沿っていない InstantClientの SDKは、 Makefileも直さないと使えない。
結構面倒だが、InstantClientは今後使うこともあるだろうから、この際、ちゃんとconfigure.inから直していくことにする...
なんかトータルでは、結局普通にクライアントインストールした方が早かったかなぁというぐらいの時間がかかってしまったが、まぁ経験値は稼げたから良しとしよう。(^^;;
「SYSTEM開発・運用」の新着
- ユニコードが全然ユニじゃない件 [ 2006年12月 5日]
- スパムメールと闘う・職場編 [ 2006年4月24日]
- DNSサーバが DDoSの発射台にされる問題について [ 2006年3月30日]
- Sendmailに深刻な脆弱性 [ 2006年3月23日]
- tarファイルを直接 Perlで処理 [ 2006年3月14日]
- 続・Sun Studio11を試してみる [ 2006年2月15日]
- Sun Studio11を試してみる [ 2006年2月14日]
- gcc3.4.2と Oracle InstantClient [ 2006年2月10日]
トラックバック(0)
このブログ記事を参照しているブログ一覧: gcc3.4.2と Oracle InstantClient
このブログ記事に対するトラックバックURL: http://morishoji.homelinux.net/mt/mt-tb.cgi/19




コメントする