0

Linux用のオングストローム分散を使用してBeagleboneボードでアプリケーションを開発しています。興味深い問題に直面しました。

私が実行するとき:

sh /home/root/Desktop/BBTCP/out/vehicleDetect 192.168.10.29

ターミナルでそれは言う

/home/root/Desktop/BBTCP/out/vehicleDetect:     /home/root/Desktop/BBTCP/out/vehicleDetect:         cannot execute binary file

しかし、私が実行すると

cd /home/root/Desktop/BBTCP/

sh out/vehicleDetect 192.168.10.29

動き出しますか?

最初の構成でアプリケーションを実行できない理由と理由は何ですか?

./とshの違いだと思います。違いは何ですか?

4

2 に答える 2

1

私の最初の推測は、パス内のフォルダーの1つが/home/root/Desktop/BBTCPリンクであるということです。vehicleDetectがスクリプトであり、それ自体が再帰的に呼び出される場合、このリンクは混乱を招く可能性があります。

sh -x /home/root/Desktop/BBTCP/out/vehicleDetectそうでない場合は、それが何を印刷するか試してみてください。

最後に、フォルダの内容を確認します/home/root/Desktop/BBTCP。そこに実行可能ファイルがあるかもしれませんsh。パスにが含まれている場合.、別のシェルが実行される可能性があります。

于 2012-09-13T14:18:30.050 に答える
0

/home/root/Desktop/BBTCP/out/vehicleDetect別のアーキテクチャで構築されたバイナリファイル(実行可能ファイル)を呼び出しているようです。

shとの主な違いは././ファイル自体を実行可能ファイルとして実行しようとするのに対し、それを実行shすることです。shファイルの先頭に奇妙なマジックナンバーがある可能性がありますが、それについて不平を言う ことを期待するでしょう。

#!無効な文字が含まれているか、奇妙なファイルを参照しているファイルの先頭の行ですが、推測してください。たとえば、このスクリプトファイルを、行末が異なる別のオペレーティングシステム(Windowsなど)から持ってきましたか?テキストファイルスクリプトが変換されておらず、コピーされただけの場合にも、同様の影響が見られます。多分あなたはそれを奇妙なフォーマットでダウンロードしましたか?

od -xc /home/root/Desktop/BBTCP/out/vehicleDetect最初の行を確認して見てください。

于 2012-09-13T14:44:28.293 に答える