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文件夹下,否则程序运行报错。