我正在使用Ubuntu Linux,Eclipse Neon和arm-linux-gnueabihf工具鏈交叉編譯Raspberry Pi的應用程序。 Eclipse通常適用於此。我通常能夠交叉編譯和鏈接應用程序,將其分配給RPi,然後在RPi上運行。在Eclipse中使用gnueabihf交叉工具鏈鏈接CGICC
我最近需要添加CGICC庫。我首先在Pi上安裝了庫,然後構建了一個簡單的C++應用程序,在RPi上構建並運行它,沒有任何問題。這表示該庫已正確安裝在RPi上。
然後,我想將庫複製到Linux機器上,以便在Linux機器上開發應用程序以在RPi上運行時使用它。所以我將RPi中的以下文件複製到Linux機器上:
從Linux機器上的RPi到/ usr/arm-linux-gnueabihf/include的/ usr/include/cgicc文件夾。這將RPi中的28個文件複製到位於/ usr/arm-linux-gnueabihf/include中的新CGICC文件夾中。 linux機器現在應該有所有的包含文件。
/usr/lib/libcgicc*.*在Linux機器上從RPi到/ usr/arm-linux-gnueabihf/lib文件(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 /包括。 C/C++構建/設置/跨G ++鏈接器/庫到cicc和庫搜索路徑到/ usr/arm-linux-gnueablihf/lib。
當我建一個項目,該項目編譯但鏈接拋出兩個錯誤消息:
未定義參考cgicc::Cgicc::getElement undefined reference to
cgicc :: FormEntry ::的getValue
它不抱怨源文件「Cgicc formData;」中的行但它確實抱怨與CGICC有關的其他每一行。
那麼我做錯了什麼?我一直在爲此爭取一週,搜索堆棧溢出和其他地方。我希望這裏有人能幫助我。我厭倦了編輯,構建和測試RPi。