1

システムにインストールされているライブラリとは独立して移動できる、完全に自己完結型の OTP を構築しようとしています。

次のように、ソースから OpenSSL 1.0.0d をビルドします。

./config --prefix=<open-ssl-dir>
make
make install

次に、OTP R14B03:

./configure --prefix=<erlang-dir> --with-ssl=<open-ssl-dir> --without-termcap

Make of Erlang は次のように失敗します。

relocation R_X86_64_32 against `OPENSSL_ia32cap_P' can not be used when making a shared object; recompile with -fPIC

Ubuntu 10.04 について話しています。どんな助けでも大歓迎です-ありがとう!

4

3 に答える 3

5

「共有オブジェクトを作成するときに使用できません。-fPIC で再コンパイルします」は、SSL が位置独立コード フラグでビルドされていないことを意味します。これは、Dynamic Shared Object (DSO) として構築するために必要です。これはおそらく、Erlang のビルド プロセスで必要になります。ビルド例:

$ tar zxvf openssl-0.x.tar.gz
$ cd openssl-x
$ sh config shared -fPIC
$ make
$ sudo make install
于 2011-07-11T06:05:18.300 に答える
1

ppc64le の場合:

./configure --prefix=/home/huaxin/huaxin/toolsInstalled/ --build=ppc64le CFLAGS="-D_GNU_SOURCE -DOPENSSL_NO_EC=1"
于 2016-01-28T09:19:32.460 に答える
0

sudo 権限を持つ VM でビルドすることをお勧めします。次に --prefix=/usr を使用して OpenSSL のようなライブラリを構築し、make install がそれらを通常のシステム ライブラリに配置するようにします。

次に、-rpath を使用してツール (この場合は Erlang) をビルドします。次にldd、Erlang と任意のポート (C 拡張機能) のすべてのライブラリ依存関係を検索し、それらを Erlangs lib ディレクトリにコピーするために使用します。readelf -d を使用してすべてのバイナリとライブラリをチェックし、必要に応じて RPATH が $ORIGIN または $ORIGIN/../lib に設定されていることを確認します。リンク プロセスが正しくない場合 (またはシステム ライブラリの二次的な依存関係をコピーした場合) は、patchelf を使用してこれらの問題を修正してください。

次に patchelf を使用して、バイナリ (ライブラリーではない) のインタープリターが Erlang の lib ディレクトリにある ld-linux.so.2 を指すように設定します。そして、次を使用してテストスイートを実行します

strace -e open erl ...ビルドが /lib または /usr/lib で何も開いていないことを確認します。

この時点で tar を実行すると、任意の Linux で実行できます。

この方法で Python を構築する方法の詳細については、この質問Compiling Python 2.6.6 and need for external packages wxPython, setuptools, etc... in Ubuntuを参照してください。

于 2011-07-14T05:33:20.137 に答える