Eclipse和Linaro交叉編譯並配置鏈接庫文件

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文件夾下,否則程序運行報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章