コンパイル時に共有ライブラリファイルエラーを解決する方法[閉じる]

コンパイル時に共有ライブラリファイルエラーを解決する方法[閉じる]

Makefileを使用してプロジェクトをコンパイルしていますが、次のエラーが発生します。

[rahul@wbms-dev wdb]$ make
/orasw/app/oracle/product/client_19c/bin/proc INCLUDE=/orasw/app/oracle/product/client_19c/lib INCLUDE=/home/rahul/newest_wbms_code_071521/src/wut INCLUDE=/home/rahul/newest_wbms_code_071521/src/wbr CODE=ANSI_C LTYPE=NONE IRECLEN=256 SQLCHECK=FULL USERID=wbms/myPassword@myProjb iname=OrganizationModelDB.p
/orasw/app/oracle/product/client_19c/bin/proc: error while loading shared libraries: libclntsh.so.19.1: cannot open shared object file: No such file or directory
make: *** [OrganizationModelDB.c] Error 127

~/.bashrc ファイルに PATH、LD_LIBRARY_PATH、ORACLE_HOME を追加しました。

PATH=$PATH:/orasw/app/oracle/product/client_19c/bin
LD_LIBRARY_PATH=/orasw/app/oracle/product/client_19c/lib
export ORACLE_HOME=/orasw/app/oracle/product/client_19c

libclntsh.so.19.1ファイルにもrwx権限が必要です。

[rahul@wbms-dev ~]$ ls -l /orasw/app/oracle/product/client_19c/lib/ | grep 'libclntsh*'
lrwxrwxrwx. 1 oracle mis        21 Jul  1 08:42 libclntshcore.so -> libclntshcore.so.19.1
-rwxrwxrwx. 1 oracle mis   8040704 Jul  1 08:42 libclntshcore.so.19.1
lrwxrwxrwx. 1 oracle mis        17 Jul  1 08:42 libclntsh.so -> libclntsh.so.19.1
lrwxrwxrwx. 1 oracle mis        12 Jul  1 08:42 libclntsh.so.10.1 -> libclntsh.so
lrwxrwxrwx. 1 oracle mis        12 Jul  1 08:42 libclntsh.so.11.1 -> libclntsh.so
lrwxrwxrwx. 1 oracle mis        12 Jul  1 08:42 libclntsh.so.12.1 -> libclntsh.so
lrwxrwxrwx. 1 oracle mis        12 Jul  1 08:42 libclntsh.so.18.1 -> libclntsh.so
-rwxrwxrwx. 1 oracle mis  79942576 Jul  1 08:42 libclntsh.so.19.1

エラーの意味と解決策を理解できません。助けてください。

ベストアンサー1

問題は、ファイルに設定したシェル変数がエクスポートされないLD_LIBRARY_PATHことです。~/.bashrcエクスポートされないため、リンカーではこれを見ることはできません。

変数をエクスポートするには(実行する他のコマンドで表示できる環境変数を生成します)、次のコマンドを使用しますexport

export LD_LIBRARY_PATH

変数と同様に、変数の設定中にエクスポートすることもできますORACLE_HOME。実際には、$ORACLE_HOME次のように値を使用して3行の変数割り当てを作成できます。

export ORACLE_HOME=/orasw/app/oracle/product/client_19c
export LD_LIBRARY_PATH="$ORACLE_HOME/lib"
PATH=$PATH:$ORACLE_HOME/bin

これにより、最新バージョンのOracleツールで更新するたびに、重複する量と値を変更する必要がある場所の数が減ります。

このPATH変数はすでに環境変数なので、エクスポートする必要はありません。

おすすめ記事