*

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)の際に、なぜ発覚しなかったのかが不思議ですが、それはまた別の機会に。

ではっ!

関連記事

no image

Objective-CからC++コードを呼び出す

どもどもです。 今回は、突然ながらMacに関係する投稿です。 ソフト関係のことを勉強していて

記事を読む

toppers

C言語でEV3開発(16)-TOPPERS/HRP2 EV3 で Bluetooth割込み

どもです。 今回は、EV3 の環境をTOPPERS/HRP2 EV3RT で作成したアプリをPC上

記事を読む

no image

C言語でEV3開発(7)

どもです。 今回のエントリーでは、いよいよEV3を動かしていきます。 新しい環境に対して、最もよ

記事を読む

no image

C言語でEV3開発(15)-TOPPERS/HRP2 EV3 で PID制御

どもです。 今回のエントリーは、コレまでのエントリーから内容を変えて、モーターの動作の制御をします

記事を読む

python

VisualStudioCommunityでのPython開発環境構築

どもです。 最近、VisualStudioでのPython開発を始めました。 その際の環境構築に

記事を読む

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

eclipse_oxygen

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

どもです。 前回のエントリでは、WindowsにRaspberryPi3のクロスコンパイル環境の構

記事を読む

python

Ev3開発サポートツール(4)-Pythonによるグラフ表示

どもです。 前回のエントリーで、VisualStudioCommunityでのPythonの開発環

記事を読む

toppers

C言語でEV3開発(25)-Q_Learningを実装してみた…が!?

どもです。 今回の内容は、「失敗しました」という内容です。 最近、流行になっている深層学習/

記事を読む

google_test_top

C言語でEV3開発(5)

どもです。 今回のエントリーは、前回のエントリーでちくっと触れた、「単体テスト」について、です。

記事を読む

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 ↑