特定の OpenSSL 共有ライブラリを使用する RHEL4 用の gcc を使用して、wget の不完全な実行可能ファイルをビルドする必要があります。LD_LIBRARY_PATH はビルド時に設定解除されます。
これは、次のように指定するだけで非常に簡単です。
LDFLAGS="-W1,-rpath=/usr/local/ssl/lib -L/my_build_dir/usr/local/ssl/lib"
そしてすべてが良いです。
しかし、これにより、不完全な実行可能ファイルの動的セクションに RPATH が作成されます。
Library rpath: [/usr/local/ssl/lib:/my_build_dir/usr/local/ssl/lib]
gcc ツールチェーンを使用して、-rpath オプションを使用して指定されたもののみを使用し、ビルド時に宣言されたすべてのライブラリ パスを無視するように RPATH を設定することは可能ですか?
私は今日、以下を含む多くのSO投稿を見てきました。
わからない -Wl,-rpath -Wl,と -rpath と -L の違いは何ですか?
しかし、最終的な不完全な実行可能ファイルからビルド情報を削除するという問題に対処するものは何もないようです。
編集:これは、最終的なリンク フェーズの完全なコマンド ラインです。
gcc -Wall -std=c99 -m32 -march=athlon -mfpmath=sse -msse2 -O2 -pipe -s \
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -m32 -march=athlon \
-mfpmath=sse -msse2 -O2 -pipe -s -Wl,-rpath,/usr/local/ssl/lib \
-L/my_build_dir/usr/local/ssl/lib -o wget cmpt.o connect.o convert.o \
cookies.o ftp.o css_.o css-url.o ftp-basic.o ftp-ls.o hash.o host.o \
html-parse.o html-url.o http.o init.o log.o main.o netrc.o progress.o \
ptimer.o recur.o res.o retr.o spider.o url.o warc.o utils.o exits.o
build_info.o iri.o version.o ftp-opie.o openssl.o http-ntlm.o \
../lib/libgnu.a /my_build_dir/usr/local/ssl/lib/libssl.so \
/my_build_dir/usr/local/ssl/lib/libcrypto.so -Wl,-rpath \
-Wl,/my_build_dir/usr/local/ssl/lib -ldl -lz -lidn -luuid -lrt
以下の nos と keltar のコメントのおかげで、問題がどこにあるかがわかります。
ここで、configure が 2 つの openssl ライブラリをフルパスで指定して終了する理由を解明します。
編集 2: -rpath および -L オプションが正しく機能していることを確認するためだけに。
上記のコマンドを書き直して、openssl ライブラリのビルド場所へのハード参照を削除すると、不完全な実行可能ファイルの RPATH が /usr/local/ssl/lib に設定されます。
完全に編集されたコマンドは次のとおりです。
gcc -Wall -std=c99 -m32 -march=athlon -mfpmath=sse -msse2 -O2 -pipe -s \
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -m32 -march=athlon \
-mfpmath=sse -msse2 -O2 -pipe -s -Wl,-rpath,/usr/local/ssl/lib \
-L/my_build_dir/usr/local/ssl/lib -o wget cmpt.o connect.o convert.o \
cookies.o ftp.o css_.o css-url.o ftp-basic.o ftp-ls.o hash.o host.o \
html-parse.o html-url.o http.o init.o log.o main.o netrc.o progress.o \
ptimer.o recur.o res.o retr.o spider.o url.o warc.o utils.o exits.o \
build_info.o iri.o version.o ftp-opie.o openssl.o http-ntlm.o \
../lib/libgnu.a -lssl -lcrypto -ldl -lz -lidn -luuid -lrt