5

Linux システム用の単純な hello world プログラムをクロスコンパイルしようとしています。

次の情報があります。

uname -a
Linux (none) 2.6.32.28 #130 PREEMPT Mon Feb 18 13:54:18 CST 2013 armv5tejl GNU/Linux

cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 421.06 
Features        : swp half fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 5

Hardware        : KeyASIC Ka2000 EVM
Revision        : 0000
Serial          : 0000000000000000

このシステムのクロスコンパイル方法を知りたいです。私は次のことを試しました:

  • arm-linux-gnueabi-gcc helloworld.c -march=armv5 -o helloworld
  • arm-linux-gnueabi-gcc helloworld.c -mcpu=arm926ej-s -o helloworld

しかし、実行可能ファイルを実行しようとすると、「コマンドが見つかりません」というエラー メッセージが表示されます。私はおそらくそれを正しくコンパイルしていませんが、私が持っている情報を考えると、どのコンパイルオプションを使用すればよいかわかりません。

(helloworld.cがすべて機能していることは知っています)。

ls -l helloworld
-rwxr-xr-x    1 0        0             8428 Jan  1 00:00 helloworld

which helloworld
which: applet not found

busybox-armv5l を入れました

busybox which helloworld
(no output)

ldd は、コンパイルしようとしているシステムにもありません (トランセンド WifiSD カード)。

ls -ln /lib/libc*
-rwxrwxrwx    1 0        0           244279 Jan 19  2012 /lib/libc.so.0
-rwxrwxrwx    1 0        0            13043 Jan 19  2012 /lib/libcrypt.so.0
-rwxr-xr-x    1 0        0          1251776 Jan  1 00:00 /lib/libcrypto.so.0.9.8

/lib/libc.so.0 を実行してバージョン情報を取得しようとしたところ、セグメンテーション エラーが発生しました。-static でコンパイルすると問題が修正されたようです。だから私はそれがlibcライブラリの問題だったと思います。お手伝いありがとう。

4

1 に答える 1

3

-static フラグを使用して、c ライブラリをバイナリに含める必要がありました。オースレンに感謝します。

于 2013-09-14T09:06:16.967 に答える