*

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

ではっ!

関連記事

Arduino_Logo

1台のarduinno nanoで割込みとSPIの同時使用

どもです。 先日手に入れたArduino nano(中華)で遊んでいます。 今回、この1台のAr

記事を読む

eclipse_oxygen

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

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

記事を読む

toppers

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

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

記事を読む

no image

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

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

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(1):ためしに時計を作ってみた

どもです。 また更新の間隔が空いてしまいました。 久しぶりの更新です。 前回のエントリーで

記事を読む

raspberry-pi

RaspberryPi3を購入しました

どもです。 突然ですが、「Raspberry Pi3 model B」を購入しました。 今回のエ

記事を読む

toppers

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

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

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(10)-SPI通信をしてみた(その2)

どもです。 えー。 「Qtで…」とか書いておきながら、今回もやっぱりQtは出てきません。

記事を読む

RasPi_Qt

Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。

どもです。 RaspberryPiのOS:Raspbianの新しいバージョンが、少し前(…なの

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(9)-SPI通信をしてみた

どもです。 えー。 「Qtで…」とか書いておきながら、今回はQtは出てきません。 今回のエ

記事を読む

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
Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。(その後)

どもです。 前回、Linux/RaspberryPiでのQt(Q

RasPi_Qt
Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。

どもです。 RaspberryPiのOS:Raspbianの新し

no image
RaspberryPiのOS:RaspbianをNOOBSでセットアップしてみた

どもです。 今回の内容は、「今更!?」ですがNOOBSでRasp

GitHub
C/C++のスタブを自動生成するツールを公開しました

どもです。 突然ですが、C/C++の単体テストで使用する「スタブ

Arduino_Logo
フォトレジスタを使ってみた-Arduinoで光検出

どもです。 今回は、タイトル通り「フォトレジスタの使い方」です。

→もっと見る

PAGE TOP ↑