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 利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目標 中,他的優點就顯而易見了,即編譯後的執行程式不需要外部的函式庫支援,因為所有使用的函式都已經被編譯進去了。當然這也會成為他的缺點,因為...