0

libcrypto.so (openssl) に依存する動的ライブラリ libtest.so がありますが、これらはすべて libgcc_s.so に依存しています。

Platform : Solaris sparc 5.10
Compiler : gcc 4.5.1
OpenSSL  : 1.0.1e version

この libtest.so は、私のデータベース (Oracle 11g) の外部プロシージャ (extproc) のターゲット ライブラリです。これらすべてのライブラリを 1 つのフォルダーにコピーしました。同じことが、listener.ora の LD_LIBRARY_PATH (および LD_LIBRARY_PATH_64) と oracle ユーザーの .profile に記載されています。パスとライブラリには、完全なパブリック アクセス許可が与えられます。それでも oracle (ld) は、libcrypto.so が見つからず、「そのようなファイルやディレクトリはありません」と報告しています。

実稼働セットアップで実験できる範囲 (および毎回 DBA にリスナーを再起動させること) には一定の制限があるため、コード (libtest.so のコード ファイル) を openssl に移動し、結合された libcrypto.so を作成し、名前を変更しました。 libtest.soとして。しかし、現在、「ld」は libgcc_s.so が利用できないと報告しています。-static-libgcc フラグを使用して libgcc_s.so を静的にリンクするオプションを見つけました。ただし、これは機能しないようです。他に試すことができるものはありますか?

これは、目前の問題に対してやり過ぎのように思えるかもしれません。しかし、多くの本番システムでこの問題に直面しています。ライブラリは私たちのものであるため、それらを Oracle/lib または任意のシステム lib ディレクトリにコピーしたり、システム レベルでプロパティを変更したりすることはできません。最善の解決策は、ld の飢えを満たす単一の完全に含まれたライブラリを持つことです。

4

2 に答える 2

0

上記を行う方法が見つかりませんでした。ただし、「srvctl setenv listener -T "LD_LIBRARY_PATH=/my/path/"」を実行することで問題は解決しました。上記の問題 (静的リンク) に対処するための返信がまだないため、この質問を終了します。

于 2013-09-02T07:57:18.160 に答える
0

いいえ。*.soファイルは、動的にリンクすることしかできない共有ライブラリです。*.o静的ライブラリを.aファイルとして構築して静的にリンクできるようにするには、元のソースまたはファイルが必要です。

于 2013-09-03T00:49:48.470 に答える