同様の質問があることを知っていますが、解決策や正確なケースが見つかりませんでした。このバイナリは、Arch Linux用のGCC 4.7を使用して構築されました。このパッケージはビルドシステムで正常に動作します。次のコマンドは次から実行されます。
Linux vbox-ubuntu 3.2.0-29-generic #46-Ubuntu SMP 金曜日 7月 27日 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
問題のファイルは次の場所にあります。ここ。 Linux 64ビットからWindows 64ビットへのクロスコンパイラ。解凍して、必要なすべてを含むディレクトリを~/
取得します。~/mingw64
私が走ろうとしているときに~/mingw64/x86_64-w64-mingw32/bin/as
得ることは次のとおりです。
bash: /home/ruben/mingw64/x86_64-w64-mingw32/bin/as: No such file or directory
ランニングはfile ~/mingw64/x86_64-w64-mingw32/bin/as
私に以下を与えた:
/home/ruben/mingw64/x86_64-w64-mingw32/bin/as: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x0b8e50955e7919b76967bac042f49c5876804248, not stripped
ランニングはldd ~/mingw64/x86_64-w64-mingw32/bin/as
私に以下を与えた:
linux-vdso.so.1 => (0x00007fff3e367000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f2ceae7e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2ceaac1000)
/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f2ceb0a8000)
私は本当に迷っています。どんな助けでも大変感謝します。
編集する:詳細:ビルドシステムはArch Linux(現在glibc 2.16)です。出力はls -l
次のとおりです
-rwxr-xr-x 2 ruben users 1506464 11 aug 23:49 /home/ruben/mingw64/bin/x86_64-w64-mingw32-as
出力はobjdump -p
次のとおりです
Version References:
required from libz.so.1:
0x0827e5c0 0x00 05 ZLIB_1.2.0
required from libc.so.6:
0x0d696917 0x00 06 GLIBC_2.7
0x06969194 0x00 04 GLIBC_2.14
0x0d696913 0x00 03 GLIBC_2.3
0x09691a75 0x00 02 GLIBC_2.2.5
ldd -v
Ubuntu 12.04の出力は次のとおりです。
linux-vdso.so.1 => (0x00007fff225ff000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fd525c71000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd5258b4000)
/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007fd525e9b000)
Version information:
/home/ruben/mingw64/x86_64-w64-mingw32/bin/as:
libz.so.1 (ZLIB_1.2.0) => /lib/x86_64-linux-gnu/libz.so.1
libc.so.6 (GLIBC_2.7) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libz.so.1:
libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6:
ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
テストされた他のオペレーティングシステムは、Fedora 17(glibc 2.15)とUbuntu 12.04(eglibc 2.15)でした。 zlibとglibcのバージョン要件を満たしています。
答え1
私のシステムでこれを実行すると、次ldd -v as
のような結果が得られます。
./as: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by ./as)
linux-vdso.so.1 => (0x00007fff89ab1000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1e4c81f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e4c498000)
/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f1e4ca6d000)
GLIBC_2.14
はい、このバイナリはシステムから欠落している可能性があるシンボルを探しているようです。 svenxが指摘したように、そのシンボルを探しているようですmemcpy@@GLIBC_2.14
。memcpy
新しいバージョンが利用できる理由の詳細について説明します。このバグレポートには。
glibc
ターゲットシステムに新しいバージョンをインストールすると、問題が解決します。以前のバージョンでも機能するようにバイナリを再構築するには、リストされたglibc
方法を試してみてください。ここ。memcpy
必要なシンボルだけを提供する特定のバージョンのシムを使用することもできますが、これは少し面倒です。
アップデートを読んだ後A:あなたは正しいです、これはあなたの問題ではありません。しかし、私が見つけたようです。バイナリが/lib/ld-linux-x86-64.so.2
Ubuntu 12.04システムに存在しないインタプリタを要求しています。
$ readelf -a ./as | grep interpreter
[Requesting program interpreter: /lib/ld-linux-x86-64.so.2]
ldd
どこで見つけることができるかを知っていますが、/lib64
カーネルはいつバイナリを実行しようとしているのかわからず、ファイルから要求されたインタプリタが見つからないようです。インタプリタで手動で実行できます。
$ pwd
/home/jim/mingw64/x86_64-w64-mingw32/bin
$ ./as --version
-bash: ./as: No such file or directory
$ /lib64/ld-linux-x86-64.so.2 ./as --version
GNU assembler (rubenvb-4.7.1-1-release) 2.23.51.20120808
Copyright 2012 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `x86_64-w64-mingw32'.
これがうまくいくかどうか100%確信できません。私のシステムでは、gcc
このように実行される分割エラーが発生します。しかし、それは少なくとも別の質問です。
答え2
あなたの質問は64ビットシステムで32ビットバイナリを実行すると「見つかりません」メッセージを受信する: 存在しない動的ローダーを参照する実行可能ファイルがあります。
あなたの場合、動的ローダーが/lib/ld-linux-x86-64.so.2
存在しますが、別の場所にあります/lib64/ld-linux-x86-64.so.2
。プログラムを実行する最も簡単な方法はシンボリックリンクを作成することです。
ln -s ../lib64/ld-linux-x86-64.so.2 /lib/