*

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

ではっ!

関連記事

MindStormControl_SprachScreen

EV3開発サポートツール(1)-C#のユーザーコントロール開発

どもです。 突然ですが、今回はC#に関するエントリになります。 具体的には、C#/WPFで、独自

記事を読む

no image

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

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

記事を読む

toppers

C言語でEV3開発(22)-ロギング機能

どもです。 前回は、モーターの出力を制御する方法について記載しました。その際に、モータ/車体が期待

記事を読む

raspberry-pi

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

どもです。 前回のエントリーで、pigpioを使用したチャタリング対策について記載しました。 今

記事を読む

no image

C言語でEV3開発(7)

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

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(2)-C#のユーザーコントロール開発(2つ目)

どもです。 前回に引き続き、今回もC#/WPFでの独自UI(ユーザーコントロール)の作成についての

記事を読む

raspberry-pi

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

どもです。 ついに、念願のRaspberryPi3対応のタッチスクリーンを買いました。 今回のエ

記事を読む

no image

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

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

記事を読む

raspberry-pi

RaspberryPi起動時にpigpiodがスタートしないようにする

どもです。 これまでpigpioを使用してRaspberryPiからLEDをチカらせる方法など、い

記事を読む

toppers

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

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

記事を読む

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="">

RasPi_Qt
QtでRaspberryPi/GUI開発(12)-gpioの状態をGUIに反映する

どもです。 今回は、gpioピンの状態(HIGH/LOW)の変化を画

raspberry-pi
RaspberryPi起動時にpigpiodがスタートしないようにする

どもです。 これまでpigpioを使用してRaspberryPiから

no image
自宅で電子工作(1):ブレッドボードでの配線を省略する

どもです。 突然ですが、電子工作を始めてみました。 1.背

Arduino_Logo
ホールセンサーの種類と使い方(割込み編)

どもです。 前回に引き続き、今回もホールセンサーについてです。

Arduino_Logo
ホールセンサーの種類と使い方

どもです。 今回のエントリは、表題にある「ホールセンサー」についてで

→もっと見る

PAGE TOP ↑