- - PR -
LD_RUN_PATH の追加方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-27 09:31
環境の差を埋めたく思い、質問させていただきます。
環境 旧:RedHat8.0 新:CentOS4.2 旧環境で make する際に LD_RUN_PATH="/usr/local/pgsql8.1.1/lib" と表示されるのに対し、 新環境で make する際には LD_RUN_PATH が表示されません。 その為に pgperl でのコンパイルに四苦八苦しています。 /etc/ld.so.conf には、 /usr/local/pgsql* 等の記述は両環境にありません。 env コマンドの結果も差違が見つかりませんでした。 この状況で次に探りを入れる場所のアドバイス等はありますか? 単純に /etc/ld.so.conf.d/ にパスを追加すれば解決すると思いますが、 スッキリしないのと PostgreSQL のバージョン毎に導入している(ことにより今後パスが変わる)ので、 旧環境ではどうやったのかな、と思いまして。 旧環境は試行錯誤しながら色々と試していたので、何故に LD_RUN_PATH が追加されているのか、 その手順を思い出せないでいます。 |
|
投稿日時: 2006-02-27 10:59
PostgreSQL は configure 時に rpath を自動的に設定してくれるので、明示的に LD_RUN_PATH を設定する必要がなかったように思いますが。
あと、設定されていないのであれば、 export LD_RUN_PATH=/usr/local/pgsql8.1.1/lib とすれば設定できます。ただし、LD_RUN_PATH の設定は ld で -rpath オプションを使用することによって上書きされてしまいますし、rpath を設定する必要がないものに対してまで rpath が設定されてしまいます。 |
|
投稿日時: 2006-02-27 11:54
>あんどれさん
ありがとうございます。 -rpath の挙動の解りやすいご説明をありがとうございました。 もう少し詳しい状況をお話しすると、 旧環境で > export PGSQL_HOME=/usr/local/pgsql/pgsql8.1.1 > export PATH=$PATH:$PGSQL_HOME/bin > export PGLIB=$PGSQL_HOME/lib > export PGDATA=$PGSQL_HOME/data > export MANPATH=$MANPATH:$PGSQL_HOME/man > export POSTGRES_HOME=/usr/local/pgsql/pgsql8.1.1 > export POSTGRES_LIB=/usr/local/pgsql/pgsql8.1.1/lib > export POSTGRES_INCLUDE=/usr/local/pgsql/pgsql8.1.1/include > cd /usr/local/src/Pg-2.1.1/ > perl Makefile.PL > make ... LD_RUN_PATH="/usr/local/pgsql/pgsql8.1.1/lib" gcc -shared -L/usr/local/lib Pg.o -o blib/arch/auto/Pg/Pg.so \ -L/usr/local/pgsql/pgsql8.1.1/lib -lpq \ ... > export PGDATABASE=test > export PGUSER=postgres > make test ... test sequence finished. となっているのが、 新環境で ※上記 export 済み。 > make ... gcc -shared -L/usr/local/lib Pg.o -o blib/arch/auto/Pg/Pg.so -L/usr/local/pgsql/pgsql8.1.1/lib -lpq ... > export PGDATABASE=test > export PGUSER=postgres > make test PERL_DL_NONLAZY=1 /usr/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl Can't load 'blib/arch/auto/Pg/Pg.so' for module Pg: libpq.so.4: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm line 230. at test.pl line 12 Compilation failed in require at test.pl line 12. BEGIN failed--compilation aborted at test.pl line 12. test failed make: *** [test_dynamic] Error 255 と libpq.so.4 を見つけにいけてない状況になっています。 アドバイス頂いた通りに export LD_RUN_PATH=/usr/local/pgsql8.1.1/lib で、一時的に指定した後に無事に make test が通りました。 ただ、やはり疑問は残ったままなので・・・ RedHat の(明示的に指定していない状況で LD_RUN_PATH がある)環境が正常なのか、 CentOS の状況が正常なのか、どちらなのでしょうか? #正常というよりも、より正しい状態? また RedHat の場合は LD_RUN_PATH の表示があることからどこかで指定されていると 思いますが、どの(ファイル|設定)を見直せば良いでしょうか? #環境変数は env で出力させて、指定が無いところまでは確認いたしました。 よろしくお願いします。 |
1