2010-11-30 17 views
0

Oracle 11はHP-UX 11.31およびgcc 4.4.3で動作しています。それはaCCで構築されているので、occiにリンクする方法がないようです。このための回避策はありますか?HPUXでgccでocciをコンパイル/リンクすることはできますか?

私は何とか基本的に接続をプロキシするライブラリを作ることができるという馬鹿げた考えを持っていました.gccでリンクできるaCCでライブラリを構築しました。これは可能ですか?

答えて

2

いいえ、回避策はありません。

異なるCコンパイラには、標準ABIを使用した互換コードがあります。オブジェクトコードを多かれ少なかれミックスして矛盾のない状態でマッチさせることができます。

ただし、異なるC++コンパイラには、オブジェクトコードが互換性がないという意味でさまざまな慣習があります。これらはクラスレイアウト(特に複数の継承階層と恐ろしい「ダイヤモンド・オブ・デス」)に関係しますが、名前のマングリング規則や例外処理にも関係します。名前のマングリングスキームは意図的に異なるように作られています。誤ってあるコンパイラから別のコンパイラにオブジェクトをリンクすることはできません。

一般に、ライブラリがC++コンパイラを使用してビルドされている場合は、同じまたは少なくとも互換性のあるC++コンパイラを使用してコードをリンクする必要があります。そして、それはほとんどの場合同じファミリのコンパイラを意味します。たとえば、コードがG ++ 4.4.2でビルドされていても、G ++ 4.5.0を使用できる可能性があります。ただし、aCCとG ++を混在させることはできません。

関連する問題