*

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

ではっ!

関連記事

toppers

C言語でEV3開発(19)-コマンド通信処理でEchoBackしてみた

どもです。 前回は、Bluetoothの接続状態の変化に伴う、状態遷移について書きました。 今回

記事を読む

toppers

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

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

記事を読む

toppers

C言語でEV3開発(27)-EV3にヒステリシス処理を実装してみた

どもです。 今回は、モーターから読み出した値に対するヒステリシス・フィルター処理です。 0.

記事を読む

no image

C言語でEV3開発(12)-opOUTPUT_TIME_POWERコマンド

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

記事を読む

no image

C言語でEV3開発(14)-opOUTPUT_TIME_SPEEDコマンド

どもです。 今回のエントリーは、モーターを動かすコマンドである「opOUTPUT_TIME_SPE

記事を読む

no image

C言語でEV3開発(17)-コマンドによるTOPPERS/HRP2 EV3RT アプリケーションの制御(コントロール)

どもです。 今回は、TOPPERS/HRP2 EV3RT で作成したアプリをPC上から操作するため

記事を読む

python

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

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

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

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

記事を読む

toppers

C言語でEV3開発(24)-APIの実行時間を測定してみた。

どもです。 今回、以前から気になっていた、開発環境/プラットフォームであるTOPPERS HRP2

記事を読む

toppers

C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた

(テーマ) C言語でEV3開発(28)-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
QtでRaspberryPi/GUI開発(7):pigpioを使用したチャタリング対策の問題

どもです。 前回のエントリーで、pigpioを使用したチャタリング対

RasPi_Qt
QtでRaspberryPi/GUI開発(6):pigpioを使用したチャタリング対策

どもです。 前回のエントリーで、pigpioを使用したボタンを使用し

RasPi_Qt
QtでRaspberryPi/GUI開発(5):pigpioを使ってみた

どもです。 RaspberryPiを購入して、LEDも手に入れたので

RasPi_Qt
QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きま

raspberry-pi
RaspberryPi3対応のタッチスクリーンを買いました

どもです。 ついに、念願のRaspberryPi3対応のタッチスクリ

→もっと見る

PAGE TOP ↑