動態庫的封裝:【add.c】
1、建立庫函式的原始檔:vim add.c 和vim sub.c
2、生成目標資料夾:gcc -c add.c -fpic
3、生成動態庫:gcc add.o -o libadd.so -shared
【備註:libadd.so:lib是字首,add是庫的名字,so是字尾,代表的是動態庫】
4、建立呼叫庫函式的原始檔:vim demo.c
5、編譯執行:gcc demo.c ./libadd.so
【備註:這裡的動態庫是在當前目錄下的】
動態庫和靜態庫的區別:
1、靜態庫的字尾是.a,動態庫的字尾是.so.;
2、在編譯鏈結的時候,對於靜態庫,鏈結器是把靜態庫里的函式拷貝到呼叫的地方,呼叫一次 拷貝一次====》對應的實驗現象是:mv libadd.a ../之後,./a.out是可以執行的;而對於動態庫,鏈結器是在呼叫的地方做個「標記」,呼叫的時候再去動態庫里去進行載入!
===》對應的實驗現象:mv libmat.so ../之後,./a.out是不可以執行的;
3、鏈結動態庫的可執行檔案一般比鏈結靜態庫的可執行檔案要小;
4、預設的鏈結方式是動態鏈結!如果要靜態連線的話,加個引數-static
gdb除錯:
主要的作用是用來除錯**的錯誤可以做到單步除錯,或者從乙個斷電執行到下乙個斷點,甚至是改變當前的程式的執行檔案,按照我們設定的條件進行執行!
【countnine.c為例】
gcc -g countnine.c -o demo1;
-g加入除錯資訊到可執行檔案裡面;
==》gcc countnine.c -o demo2
==》比較下demo1和demo2的大小;
==》實際開發中:debug版本和發布版本(release版本)的可執行檔案!
進入到除錯環境中:gdb debug版的可執行檔案
打斷點:
break 程式的行號
或者break 函式的名字
檢視斷點:
info break
執行:run
單步執行:
step
【遇到函式,會進入到函式裡面進行單步執行】
next
【遇到函式,不會進入到函式裡面進行單步執行】
刪除斷點:
delete 斷點編號
continue
【如果接下來沒有斷點,一直執行到程式結束】
c語言:
用變數a給出下面的定義:
①乙個整型數;
int a;
②乙個指向整型數的指標;
int *a;
③乙個指向指標的指標,它指向的指標是指向乙個整型數;
int **a;
④乙個有10個整型數的陣列;
int a[10];
⑤乙個有10個指標的陣列,該指標指向乙個整型數;
int *a[10];
⑥乙個指向有10個整形陣列的指標;
int (*a)[10];
⑦乙個指向函式的指標,該函式有個整型引數並返回乙個整型數;
int (*a) (int);
⑧乙個有10個指標的陣列,該指標指向乙個函式,該函式有乙個整型引數並返回乙個整型數;
int (*a[10])(int) ;
做一下筆記,關於奇數分頻
奇數分頻之前本科做過很多,現在突然又忘了,最近在整理 把一些簡單的小 整理起來,以便以後隨時檢視。奇數分頻採用時鐘的上公升沿和下降沿分別計數分頻得到兩個占空比不為50 的時鐘訊號,然後在進行或操作得到輸出的占空比為50 的時鐘。下面是奇數分頻的小 親測可以實現。奇數分頻 單位 電子科技大學 modu...
2020 06 07記錄一下
軟體測試技術型方向 自動化測試工程師,效能測試工程師,安全測試工程師等專項技術方發展 初級軟體測試人員專業知識 1 軟體功能測試技術,體現在用例設計和缺陷設計兩方面。主要包括軟體需求規格說明書的評審 測試計畫 測試用例設計技術 環境搭建 測試執行 缺陷提交 回歸測試 測試報告等。2 web自動化測試...
記錄一下進展
最近倆周都在除錯caffe的windows和matlab聯合使用,真的是超級鬱悶的一段時間。caffe編譯通過,但是目前有些不能用,當使用image data時,prototxt檔案解析失敗,我也不知道到底怎麼回事。另外乙個,在matlab呼叫caffe的mex檔案時,總是在初始化就失敗了。具體原因...