1

configure64 ビット システムでは、次のようにテストをコンパイルしようとすると失敗します。

$ gcc -m32 -o conftest -L/usr/lib/i386-linux-gnu/ conftest.c -lfreetype
/usr/bin/ld: cannot find -lfreetype
collect2: ld returned 1 exit status

しかし、私がすれば成功です:

$ gcc -m32 -o conftest conftest.c /usr/lib/i386-linux-gnu/libfreetype.so.6

最初のケースで ld が 32 ビットの libfreetype.so.6 を見つけられないのはなぜですか?

4

1 に答える 1

3

ランタイムと開発システムには違いがあります。リンカーは探していますがlibfreetype.so、見つかりません。実行時のプログラムは、それを探してlibfreetype.so.6見つけます。

FreeType 開発パッケージをインストールする必要があります。

libfreetype.soただし、それほど多くの作業を行う前に、最初にが に存在しないことを確認し/usr/lib/i386-linux-gnu、次に root 権限を使用して次のことを行うことで、この仮説を検証できます。

cd /usr/lib/i386-linux-gnu
ln -s libfreetype.so.6 libfreetype.so

次に、最初のコマンド ラインを再試行します。

これが機能する場合は、作成したばかりのシンボリック リンクを削除してから、FreeType 開発パッケージをインストールします。

于 2012-06-17T19:27:20.990 に答える