私はBuildrootとRaspberry Pi(Raspbianを実行中)で私の最初のステップをやっています。しかし、どういうわけか、私はクロスコンパイルに間違ったことをしているようです。アプリケーションは、これは私が何をしたかであるCで書かれた最も簡単なHello Worldのプログラムです:クロスコンパイルされたアプリケーションは、ラズベリーパイで実行されません
- はbuildroot
make raspberrypi2_defconfig
make toolchain
をダウンロードしてインストールそれから私は小さなアプリケーションを書き、次のMakefile:
CROSS_BIN := /home/me/raspi/buildroot-2016.05/output/host/usr/bin
SYSROOT := /home/me/raspi/buildroot-2016.05/output/host/usr/arm-buildroot-linux-uclibcgnueabihf/sysroot
PATH := $(CROSS_BIN):$(PATH)
CC := arm-linux-gcc
CFLAGS := --sysroot=$(SYSROOT)
app: app.c
$(CC) $(CFLAGS) -o [email protected] $<
コンパイル済みアプリをダウンロードしてラズベリーにコピーしました。私はそれを実行しようとしたとき、RPIはファイルを見つけることができないと訴えます。バイナリタイプは私にとっては大丈夫だと思われ、CPUに適合しなければなりません:
[email protected]:~ $ ./app
-bash: ./app: No such file or directory
[email protected]:~ $ ls -l app
-rwxr-xr-x 1 pi pi 4916 Jul 10 11:07 app
[email protected]:~ $ file app
app: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, not stripped
[email protected]:~ $ lscpu
Architecture: armv7l
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Model name: ARMv7 Processor rev 5 (v7l)
CPU max MHz: 900.0000
CPU min MHz: 600.0000
私が間違っていることを誰かに教えてもらえますか?アプリをネイティブでコンパイルして開発ホスト上で実行すると、問題なく実行されます。
'ldd。/ app'と' readelf -l ./app | grep interpreter'を試して、あなたのRiOSに必要なプログラムインタプリタがあることを確認してください。 – osgx
ヒントのおかげで、非常に便利なコマンドです。 Ishayが推測したように、uClibcが見つからない: '[プログラムのインタプリタを要求しています:/lib/ld-uClibc.so.0] –
ありがとうございました。それが解決策でした。glibcでうまく動作します。他のすべてのヒントの後、私は実際に自分自身を考え出しました - ちょうどまだ投稿しませんでした。 –