0

歴史的に 32 ビットの Ubuntu 仮想マシンで開発された GTK ベースの ARM プロジェクトがあります。現在、それを新しい 64 ビット Arch Linux 開発ボックスに移行しようとしています。私が取った2つのルートによって生成されたエラーをどうするかわかりません.

リンカに /usr/lib を使用するように指示すると、コンパイルが停止します。

/usr/lib/librt.so: file not recognized: File format not recognized

したがって、これが 32 ビット対 64 ビットの問題であると仮定して、gcc を /usr/lib32 に向けると、次のメッセージが表示されました。

/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/librt.so when searching for -lrt
/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/librt.a when searching for -lrt
/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/libpthread.so when searching for -lpthread
/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/libpthread.a when searching for -lpthread
/usr/bin/arm-linux-gnueabi - ld: cannot find -lz
/usr/bin/arm-linux-gnueabi - ld: cannot find -lsqlite3
/usr/bin/arm-linux-gnueabi - ld: cannot find -lusb-1.0
/usr/bin/arm-linux-gnueabi - ld: cannot find -lssl

等々。Archリポジトリからlib32-sqliteをインストールしようとしましたが、役に立ちませんでした。

どちらのディレクトリでも、次の警告を何度も何度も受け取りますが、これもよくわかりません

/usr/include/pthread.h:672:6: warning: '__regparm__' attribute directive ignored [-Wattributes]
/usr/include/pthread.h:684:3: warning: '__regparm__' attribute directive ignored [-Wattributes]
/usr/include/pthread.h:729:6: warning: '__regparm__' attribute directive ignored [-Wattributes]

それが単に最新のライブラリに対してコンパイルされた古いコードからのアーティファクトなのか、それとも何なのかはわかりませんが、そう遠くないうちに解決したいものです.

編集: 私のターゲット アーキテクチャは ARM926EJ-S / i.MX27 です

4

2 に答える 2

6

推測して、クロスコンパイル環境が適切なライブラリ/ヘッダーファイルを参照していないと言います。つまり、ARMのクロスコンパイルライブラリ/ヘッダーではなく、ビルドライブラリ/ヘッダー(i586?)を参照していますarm-linux-gnueabi

于 2013-01-02T19:05:16.197 に答える
0

64 ビット プログラムをコンパイルして、lib32 ライブラリとリンクすることはできません。

2 つの解決策があります。

  • lib32 にリンクされた 32 ビット プログラムを生成します。
  • 64 ビット ライブラリにリンクされた完全な 64 ビット プログラムを生成します。
于 2013-01-02T18:52:59.230 に答える