0

Ubuntu 12.04 64 ビットで c++ プロジェクトをビルドしようとしています。プロジェクトは 32 ビットです。端末出力で、次のような行を受け取ります。

ibcrypto.a(bio_b64.o)' は i386 出力と互換性がありません

/usr/bin/ld: i386: 入力ファイル `/usr/lib/x86_64-linux-gnu/libcrypto.a(bio_asn1.o)' の x86-64 アーキテクチャは i386 出力と互換性がありません

collect2: ld が 1 つの終了ステータスを返しました

make[2]: * [linux/release_32/cesmagent] エラー 1

libssl0.9.8 に関係があると思ったので、「sudo apt-get install libssl0.9.8:i386」を実行しましたが、最新バージョンが既にありました。

誰でもここで私を助けてもらえますか?

4

2 に答える 2

0

私の問題を解決した回避策:

32ビット版ライブラリをインストールしました

sudo apt-get install libssl-dev:i386

これにより、64 ビット ライブラリが削除されました。ディレクトリ /usr/lib/i386-linux-gnu で、32 ビット バージョンの libcrypto.a を見つけて、/usr/lib32 に配置しました。

次に、64ビットライブラリをインストールしました

sudo apt-get install libssl-dev

ディレクトリ /usr/lib/x86_64-linux-gnu で、64 ビット バージョンの libcrypto.a を見つけて、/usr/lib64 に配置しました。

プロジェクトの Makefile で、パス /usr/lib32/libcrypto.a と /usr/lib64/libcrypto.a が対応するコマンド引数に依存するように調整しました。

プロジェクトがビルドされます!

于 2013-09-03T14:15:14.637 に答える
0

libcrypto.a32 ビット バージョンが見つからないため、リンカは の 64 ビット バージョンに対してリンクしようとしています。

あなたはこれを持っていると言います:

$ locate libcrypto.a
/usr/lib/x86_64-linux-gnu/libcrypto.a

一方、これが必要です

$ locate libcrypto.a
/usr/lib/i386-linux-gnu/libcrypto.a

(両方ともできると思っていましたが、12.04 では、パッケージが競合するため、両方を持つことは不可能です。)

次のように i386 ライブラリをインストールできます。

sudo apt-get install libssl-dev:i386

基本的に、おそらくランタイム ライブラリは正しくインストールされていますが、開発者ライブラリはありませんでした。

于 2013-09-03T09:37:44.187 に答える