*

Eclipse/CrossCompile環境でプロジェクトをクリーンできない

公開日: : 最終更新日:2018/05/07 開発

どもです。
今回は、Eclipseでクロスコンパイル環境を作成した場合、[プロジェクトのクリーン]を実行すると「指定されたファイルが見つかりません」というエラーが発生しました。
(具体的には、下記の通り)

ついでに、スクリーンショットも
make_clean_error

今回は、この原因と対策について調べたので、それについてのエントリーになります。

0.はじめに
発生環境
(HW)
CPU:Intel(R) Core(TM) i7-3770L 3.5GHz
メモリ:16.0(GB))

(SW)
OS:Windows7 Professional SP1 (64bit)
Eclipse:
Version:Oxygen.3a Release (4.7.3a)
Build id:20180405-1200
Cygwin:

1.発生している現象と分析
エラーメッセージを見ても分かるように、「何かファイルが足りない/無い」ことが原因で発生してるエラーのようです。
しかし、エクスプローラで見てみると、コマンドウィンドに表示されたファイルは全て存在していました。
つまり、rmコマンドの対象となっているファイルが存在しないことが、エラーの原因ではありません。

次に、実際にコマンドライン(cygwin)上で[make clean]を実行した際には、この現象は発生しませんでした。
そのため、Eclipseあるいはその環境依存のエラーであることが考えられます。

また、Eclipseでの「構成」を、クロスコンパイラを使用しないモノに設定した場合、この問題は発生しません。
そのため、Eclipseの「構成」に依存するエラーであることが考えられます。

2.原因
以上のことから考えられるエラーは、クロス環境での「パスの設定」です。
クロス環境では、クロスコンパイラの接頭辞と、その実行ファイルが存在するパスを指定します。
つまり、クロス環境では、この指定したパスにあるファイルを用いてコンパイル/ビルドを実行します。

では、指定したパスに「rm」の実行ファイルがあるか否かを確認しましたが、存在しません。
従って、クロスコンパイラの場所として指定したパスに、rmの実行ファイルが存在しないことが原因ということが分かりました。

3.対応
原因が分かれば、対応は可能です。
「rm」の実行ファイルを、クロスコンパイラの場所として指定したパスに配置(コピー)します。

で、「rm」の実行ファイルを配置後、再度[プロジェクトのクリーン]を実行すると、当該の問題が発生しなくなります。
しかし、違う問題が発生してしまいました…。

ついでに、スクリーンショットも
make_clean_error_2

4.発生している現象と分析(2)
エラーとして出ている「-1073741515」ですが、これは16進数では「0xC0000135」となり、「DLLが見つからない」ことを示します。
このエラーを解決するためには、コピーした「rm」の実行ファイルが参照しているDLLはどれか、そのうちどれが必要かを確認し、しかるべきDLLをしかるべき場所に配置する必要があります。

5.原因(2)
まず、「rm」の実行ファイルが参照しているDLLを確認します。
今回、Windows/Cygwin環境下で作業を行っています。
そのため、lddコマンドが使用できます。
実行してみた結果は、下記の通りです。
rm_ldd
これらのDLLのうち、いずれかが不足しているために、「rm」が正常に動作していないようです。

6.対応(2)
めんどくさいので、/usr/bin/以下にあるファイルを、全て「rm」の実行ファイルと同じ場所(クロスコンパイラの場所)にコピーします。
対応としては、lddコマンドで確認した結果の中から、「/usr/bin/」以下にある

を、「rm」の実行ファイルと同じ場所にコピーします。
こうすることで、rmが実行可能になります。
上記で選択した3つのDLLについては、rmの実行ファイルを同じ場所に配置されていることから、相対パスで設定されているのではないか、と考えられます。
なお、これ以外のDLLについては、別ドライブに配置されたものであり、rmの場所が変わっても影響しない、絶対パスとして設定されていると考えられます。

以上、今回はEclipseでのクロスコンパイル環境でのプロジェクトのクリーンで発生したエラーと、その対応策について記載しました。
この問題、C言語でEV3開発(3)の際に、なぜ発覚しなかったのかが不思議ですが、それはまた別の機会に。

ではっ!

関連記事

raspberry-pi

RaspberryPiで物体検出(2)-白線検出への挑戦(2):輪郭検出による白線検出(実機編)

どもです。 今回は、前回に引き続きOpenCvを用いて道路の白線検出について、です。 1.今

記事を読む

no image

C言語でEV3開発(21)-モーター出力の制御

どもです。 前回は、超音波センサから前方障害物との距離を取得し、それを元に安全状態を判断する、とい

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

どもです。 2回目の投稿。 本格的な投稿としては、初めての投稿になります。 内容は、LEG

記事を読む

no image

C言語でEV3開発(4)

どもです。 今回のエントリーは、前回のエントリー内容/EclipseでEV3の実行ファイルをビルド

記事を読む

eclipse_4.3_kepler

elicpse/CDTでのgdbでのソースを追従したデバッグができない問題

どもです。 今回のエントリーは、Eclipse上でgdbを利用したデバッグ中に発生する問題について

記事を読む

OpenCvLogo

RaspberryPiで物体検出(1)-白線検出への挑戦(1):輪郭検出による白線検出

どもです。 今回は、OpenCvを用いて道路の白線検出について、です。 1.今回の環境 O

記事を読む

no image

C言語でEV3開発(11)-opOUTPUT_STEP_POWERコマンド

どもです。 今回のエントリーでは、再びモーターを動かすためのコマンドについて書きます。 コマンド

記事を読む

eclipse_4.3_kepler

eclipse/CDTにおけるgdbでのデバッグ中に発生するpythonのエラー

どもです。 今回のエントリーは、Eclipse上でのデバッグの際に「pythonのエンコードエラー

記事を読む

google_test

C言語でEV3開発(6)

どもです。 今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境に

記事を読む

toppers

C言語でEV3開発(20)-超音波センサと安全状態

どもです。 前回は、BluetoothでPCとEv3を接続してコマンドの送受信について書きました。

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

raspberry-pi
RaspberryPiで物体検出(2)-白線検出への挑戦(2):輪郭検出による白線検出(実機編)

どもです。 今回は、前回に引き続きOpenCvを用いて道路の白線検出

OpenCvLogo
RaspberryPiで物体検出(1)-白線検出への挑戦(1):輪郭検出による白線検出

どもです。 今回は、OpenCvを用いて道路の白線検出について、です

OpenCvLogo
OpenCvによる画像サイズ変更

どもです。 最近、カメラの動画をOpenCvで加工する、というこ

eclipse_oxygen
苦肉の策でLinux/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 前回のエントリでは、仮想環境(VirtaulBox)を用

eclipse_oxygen
Linux/EclipseでRaspberryPiのクロス環境を構築してみた…がっ!

どもです。 前回のエントリでは、WindowsにRaspberryP

→もっと見る

PAGE TOP ↑