LINUX eclipse 動態庫封裝設計

2021-07-03 23:57:12 字數 2479 閱讀 2109

linux eclipse環境下

任務:將編寫的ptz

封裝成動態庫,

重新來看,遇到的錯誤很多都是沒有必要的,可能是因為一些基本的過程沒弄好,所以才會各種錯誤,

現在整理乙個折騰之後的過程,

a.生成 .so

動態庫檔案,新建乙個

share object c++

工程檔案

新建c++ project

,shared objection

,工程名:

lptz, 

然後將所要封裝的檔案新增到專案裡,我主要是去掉了

main

函式,即自己控制傳引數的部分,然後編譯,即可生成

so 檔案。

liblptz.so

主要問題是 fpic 

編譯;其他問題忽略

b 將生成的

liblptz.so 

複製到自己建立的庫目錄下,以便搜尋庫的路徑時使用,

cp  liblptz.so  /home/lewis/workspace/libdebug

在系統檔案 ld.so.conf 

中新增路徑 

vim  /etc/ld.so.conf

然後 sudo ldconfig 

,可能修改許可權,

sudo chomd a+w ld.so.conf

c 新建

c++專案

將 .h 

標頭檔案複製到工程中 和 寫測試

.cpp

然後在properties ->gcc c++ linker 

中新增庫, 

-l 是

lptz, 

不要寫成

liblpz.so

, -l 

新增庫檔案所在路徑即可,

順利的話應該bingo

乙個問題:

除錯的時候,為什麼可以進入到函式介面的內部,進入的是生成.os

工程之中,不是已經封裝好了嗎,封裝的意義是什麼?

一些參考:新建c++

專案編譯之後會生成乙個可執行檔案,注意檢視是否正確生成,

檢視 debug configuration 

檢視相關設定,

下應該是你生成的可執行檔案,其他的那些教程之類的沒必要改動。

遇到的問題,

libgsoap.a(libgsoap_a-stdsoap2.o): relocation r_x86_64_32s against `a local symbol' can not 

be used when ****** a shared object; recompile with -fpic 問題。

在編譯安裝 gsoap 

時,在 

./configure 

之前設定

gcc,g++

編譯引數: 

$ export cflags="-fpic"

$ export cxxflags="-fpic" 

再 ./configure, make && make install 

,再編譯鏈結自己的動態庫,便能成功。

工程所用到的所有靜態庫都需要+fpic,

如果已生成,可以改寫makefile 

檔案 ,也是要改

cflags

引數;然後重新再終端

make;

流程:在gsoap2.8 

下找到makefile

檔案, 

find cflags cxxflags

cflags= -g -02 -fpic

2.debug configuration

即debug/ptzlibcontrol

2. 下面的這種情況是在我基礎沒做好的情況下出現的

error in final launch sequence

failed to execute mi command:

-file-exec-and-symbols e:/projecttemp/eclipse/testc3/debug/testc3.exe

error message from debugger back end:

原因:eclipse首先在

windows

平台呼叫

mingw

的gdb

,gdb --version 

來判斷版本,

gdb --file-exec-and-symbols 

判斷檔案格式是否合法。而這裡因為編譯的是

linux

的檔案格式,所以必然報錯了。

解決方法:

eclipse工程上右鍵選單,

debug as->debug configuration: debug

配置,最下方

select other

,選擇using legacy remote create process launcher

,即,在遠端機器上執行

gdb命令。

在 linux eclipse 下部署 OFBiz

步驟 將 framework base config 目錄 右鍵 use as soruce folder 在 runtime 目錄下,新增 gitinfo.ftl 和 svninfo.ftl 檔案 初始匯入工程的時候,會預設兩個 jar 包,先移除掉這兩個jar 包,然後再 base 目錄下找到相...

Linux Eclipse 配置交叉編譯環境

最精在研究u boot,之前用的編譯方法是在windows下用vs進行就該,然後用虛擬機器裡的ubuntu進行編譯,中間使用共享資料夾。後來覺得太麻煩了,乾脆直接在linux下進行修改和編譯,因此安裝了eclipse for c c developer。下面介紹兩種交叉編譯環境搭建的方法 一.使用工...

動態庫專題 靜態庫和動態庫

linux中有兩類函式庫,分別是靜態庫和動態庫。靜態函式庫 這類庫的名字一般是lib a 利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目標 中,他的優點就顯而易見了,即編譯後的執行程式不需要外部的函式庫支援,因為所有使用的函式都已經被編譯進去了。當然這也會成為他的缺點,因為...