Linux上での自作プログラムの実行について

1,498 views
Skip to first unread message

haru ima

unread,
Jan 7, 2014, 7:56:37 PM1/7/14
to cevrza1...@googlegroups.com
お世話になります。
初心者ですがよろしくお願いいたします。
 
Vmware(ubuntu)上でクロスコンパイルして生成した実行ファイルを
本ボードのLinux上で実行しようとしましたが、NotFoundとなり、
実行できません。
クロスコンパイルした自作プログラムを実行する場合の手順や設定等、何かありますか?
 
クロスコンパイラ:gcc-linaro-arm-linux-gnueabihf
生成した実行ファイルをUSBメモリの/usr/binにコピー。
実行権限は与えましたので、ファイル自体は存在します。
 
Ubuntu上にてqemuを使用しての実行は行う事が出来ました。
 
Hello app!! を出力するだけのアプリです。
interface 2013 11月号のp.47にある補足をそのまま行ってみた感じです。
 

cevrza1l-board

unread,
Jan 7, 2014, 8:34:58 PM1/7/14
to
作成されたファイルを確認してみてください。

もしsampleという名前の実行ファイルを、/usr/binにコピーした場合は、
CEVボードのコンソールから、lsコマンドでファイルの確認をしてください。

# ls -l /usr/bin/sample
-rwxr-xr-x   1 root     root        12333 Jan  8  2014 /usr/bin/sample

通常は上記のように確認できます。

アクセス権が、「-rwxr-xr-x」 という表示になっているでしょうか?
「x」というのが実行権です。実行権があればプログラムは実行可能な状態です。
また、/usr/binはパスが通っていると思いますが、念のため環境変数PATHの確認もしてください。
# echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/bin

もし上記で実行できない場合は、実行プログラムのファイルをホストPC(Ubuntu)で確認してください。

Ubuntu上で、fileコマンドで実行ファイルの状態が確認できます。
$ file sample
sample: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=0x498d50b849c9008ee8fc7d4e20aaf357262bd3a4, stripped
ここで、ファイルの種類がARMになっているか確認してください。

cevrza1l-board

unread,
Jan 7, 2014, 9:00:59 PM1/7/14
to cevrza1...@googlegroups.com, cevrza1...@googlegroups.com
補足です。原因が分かりました。

CEV Linux SDK V1.00.00の場合は「gcc-linaro-arm-linux-gnueabihf」を使用していましたが、CEV Linux SDK V2.00.00からgccクロスコンパイラは本家gccのソースからコンパイルした「arm-buildroot-linux-uclibcgnueabihf」を使っています。

クロスコンパイラの環境を変更してください。

Makefileの以下の行を変更します。
CROSS_COMPILE:=arm-buildroot-linux-uclibcgnueabihf-

また、CEV Linux SDK V2.00.00で使用するクロスコンパイラは以下のパスにあります。
ホストPCの環境変数PATHに、CEV Linux SDK V2.00.00で使用するクロスコンパイラのPATHを設定してください。

$ export PATH={buildrootフォルダ}/output/host/usr/bin:$PATH

として、sampleのMakefileのあるフォルダで再度makeしてください。
$ make clean; make


haru ima

unread,
Jan 8, 2014, 12:09:19 AM1/8/14
to cevrza1...@googlegroups.com, cevrza1...@googlegroups.com
早々のご返答ありがとうございました。
 
返答頂いた通りに行いましたら、無事に実行する事が出来ました。
ありがとうございました。
 
 
Reply all
Reply to author
Forward
0 new messages