1.在windows環境下,使用Eclipse和gcc-Linaro工具鏈,對BeagleBone進行交叉編譯和遠程部署
鏈接:
https://blog.csdn.net/zsy19881226/article/details/46952535
http://beaglebone.globalmultimedia.in/(英文原版)
2.動態鏈接庫的製作及配置
硬件:樹莓派開發板、VC相機
參考鏈接:http://www.cnblogs.com/skynet/p/3372855.html
2.1 製作動態鏈接庫
2.1.1編寫一個類
DynamicMath.h
#pragma once
class DynamicMath
{
public:
DynamicMath(void);
~DynamicMath(void);
static double add(double a, double b);//加法
static double sub(double a, double b);//減法
static double mul(double a, double b);//乘法
static double div(double a, double b);//除法
void print();
};
DynamicMath.cpp
#include "DynamicMath.h"
#include <iostream>
DynamicMath::DynamicMath()
{
}
DynamicMath::~DynamicMath()
{
}
double DynamicMath::add(double a, double b)
{
return a + b;
}
double DynamicMath::sub(double a, double b)
{
return a - b;
}
double DynamicMath::mul(double a, double b)
{
return a*b;
}
double DynamicMath::div(double a, double b)
{
if (b != 0){
return a / b;
}
else
{
return -1000000000000000.0;
}
}
void DynamicMath::print()
{
std::cout << "dynamic math library" << std::endl;
}
2.1.2製作動態鏈接庫
命令:
g++ -fPIC -c DynamicMath.h DynamicMath.cpp
/**
-fPIC 創建與地址無關的編譯程序(pic,position independent code),是爲了能夠在多個應用程序間共享。不加fPIC編譯出來的so,是要再加載時根據加載到的位置再次重定位的.(因爲它裏面的代碼並不是位置無關代碼)如果被多個應用程序共同使用,那麼它們必須每個程序維護一份so的代碼副本了.(因爲so被每個程序加載的位置都不同,顯然這些重定位後的代碼也不同,當然不能共享)
*/
如此生成DynamicMath.o文件
命令:
g++ -shared -o libdynmath.so DynamicMath.o
-shared指定生成動態鏈接庫。
如此生成libdynmath.so文件 .so爲linux下動態鏈接庫文件後綴名,在linux下鏈接庫(無論靜態還是動態)文件名要規範化增加前綴lib。
將生成的.so文件和.h文件考入PC端文件夾下
Include下放頭文件 lib下放庫文件
2.2 eclipse配置
在eclipse完成配置,編譯完後將執行文件考入VC相機中直接運行。
2.2.1 配置
(1)首先選擇release模式;
(2)右擊項目->選擇properties->c/c++ Build->setting
(3)配置庫文件
選擇 Cross G++ Compiler->includes
(4)配置鏈接庫
選擇Cross G++ Linker->Libraris
注:鏈接庫文件寫成dynmath(全名爲libdymath.so)編譯時,編譯器會自動識別,添加lib頭,直接寫成libdymath.so時,編譯時報錯了。
2.2 導入VC相機
將程序導入VC相機文件夾下,同時將libdymath.so文件導入VC++相機 /usr/bin文件夾下,否則程序運行報錯。