3

32ビットのubuntuシステムで64ビットの実行可能ファイルをクロスコンパイルしようとしています。これはリンクするまで機能しますが、64ビットのglib2(libglib-2.0.a)がないために失敗します。

64ビットシステムでこれを行う場合は、getlibsを使用て32ビットglib2を/ usr/lib32にインストールします。ただし、32ビットマシンでは、getlibsは逆のことをしていないようです。64ビットのglib2を/ usr/lib64にインストールします。

私の質問は次のとおりです。getlibsが実行する必要があることを手動で実行するにはどうすればよいですか。つまり、64ビットのglib2を/ usr/lib64にインストールしますか。

4

1 に答える 1

0

これについてはいくつかの方法があります。最も簡単なのは、必要なターゲットライブラリに付属するツールチェーンをダウンロードすることです。これが発生しない可能性が高いことを考えると、この問題を解決する1つの方法があります。

クロスコンパイラとしてgccを使用していると仮定します。

  1. ターゲットシステムから必要なすべてのライブラリをいくつかのフォルダにコピーします
  2. Makefile(またはコマンドライン)で、CFLAGS(およびC ++の場合はCXXFLAGS)を次のように設定します。

    -L / path / to / target / libs -Wl、-rpath-link / same / path / as / first

-Wlと-rpath-linkの間にスペースがないことに注意してください。このようにする必要があります。

-Lは、コンパイラが参照するライブラリパスを追加します。2番目の引数-Wl、-rpath-linkは、リンカーのパスを追加します。両方が必要です。そうしないと、コンパイラはシンボルを解決しますが、リンカは、リンクするライブラリがないことを嘆きます。

于 2011-03-23T00:14:23.240 に答える