私はUbuntu Linux、Eclipse Neon、およびarm-linux-gnueabihfツールチェーンを使用して、Raspberry Piのアプリケーションをクロスコンパイルしています。 Eclipseは一般的にはこれでうまくいきます。私は通常、コンパイルしてアプリをリンクし、RPiにscpし、RPiで実行することができます。gnueabihfクロスツールチェーンを使用してEclipseでCGICCをリンクする
最近、CGICCライブラリを追加する必要がありました。最初にPiにライブラリをインストールし、シンプルなC++アプリケーションを構築し、問題なくRPi上にビルドして実行しました。それは、ライブラリがRPiに正しくインストールされているということです。
私はLinuxマシンにライブラリをコピーしていましたので、LinuxマシンでRPi上で実行されるアプリケーションを開発する際に使用することができました。そこで、RPiからLinuxマシンに次のファイルをコピーしました。
RPiからLinuxマシンの/ usr/arm-linux-gnueabihf/includeへの/ usr/include/cgiccフォルダ。 RPiから28個のファイルが/ usr/arm-linux-gnueabihf/includeにある新しいCGICCフォルダにコピーされました。 Linuxマシンはすべてのインクルードファイルを持つべきです。
/usr/lib/libcgicc*.* Linuxマシンの/ usr/arm-linux-gnueabihf/libへのRPiからのファイル(3ファイル)。 RPiにも2つのシンボリックリンクがありました。私はLinuxマシン上でシンボリックリンクを作った。この時点で、ライブラリはRPiからLinuxマシンに移行されたようです。 Eclipseで
私は単純なプロジェクト作成:
#include <iostream>
#include <cgicc/CgiDefs.h>
#include <cgicc/Cgicc.h>
#include <cgicc/HTTPHTMLHeader.h>
#include <cgicc/HTMLClasses.h>
using namespace std;
using namespace cgicc;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
Cgicc formData;
form_iterator fChannel = formData.getElement("servochannel");
if (fChannel != (*formData).end() && !fChannel->isEmpty()) {
int channelNumber = atoi(fChannel->getValue().c_str());
}
return 0;
}
を、次のように私は、プロジェクトのプロパティを設定します。 C/C++ビルド/設定/クロスG ++コンパイラは、/は/ usr /腕-linuxの-gnueabihfに含まれてい/ include。 /usr/arm-linux-gnueablihf/libへのciccおよびライブラリ検索パスへのC/C++ビルド/設定/クロスG ++リンカー/ライブラリ。
私はプロジェクトをビルドすると、プロジェクトがコンパイルされますが、リンカは、2件のエラーメッセージがスローされます。cgicc::Cgicc::getElement undefined reference to
cgiccへ
未定義の参照:: FormEntryを::のgetValue
それはありませんソースファイル "Cgicc formData;"の行について文句を言うそれはCGICCに関連する1行おきに文句を言う。
どうしたのですか?私はスタックオーバーフローや他の場所を探して、今一週間これを戦ってきました。誰かが私を助けることを願っています。私は、RPiを編集し、構築し、テストすることに飽き飽きしています。