靈活使用動態庫進行程式開發

2022-09-17 13:03:17 字數 1483 閱讀 5972

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main(int argc,char **ar**)

void *handle = dlopen(ar**[1],rtld_now);//開啟乙個動態庫,並返回乙個庫的控制代碼

if(!handle)

//定義了乙個函式指標

char *(*init)(void) = dlsym(handle,"init_something");//根據控制代碼獲取函式名稱,或者全域性變數

printf("%s",init());

return 0;

vim ts.c

char *init_something(void)

vim lcd.c

char *init_something(void)

gcc -o ts.o ts.c -c 

gcc -shared -fpic -o libts.so ts.o

gcc -o lcd.o lcd.c -c 

gcc -shared -fpic -o liblcd.so lcd.o

export ld_library_path=$ld_library_path:`pwd`

gcc main.c -o main -ldl  //dlopen dlsym

./main libts.so

open

**********====

1,可以用來建立普通檔案

- open()

s socket()

l link()

p fifo()

b mknod()

c mknod()

d mkdir()

2,可以用來開啟普通檔案、符號鏈結、命名管道、塊裝置 、字元裝置

- open()

s socket() (網路介面裝置在/dev下沒有對應的節點,無法使用oepn)

l open()

p open()

b open()

c open()

d opendir()

動態編譯

執行如下**時,根據指定的動態庫來初始化不同的東西

init_something() --> 初始化某些東西

1,動態庫liblcd.so中包含:

init_something()

2,動態庫libts.so中包含:

init_something()

動態庫的靜態編譯:

********************==

gcc main.c -o main -llcd (編譯的時候已經指定了動態庫,無法改變)

golang 使用gops進行程式監控

go install github.com google gops請放到系統環境變數裡面 如果執行install正常來說應該生成在 gopath bin 下面 看到官方給了乙個測試例子 這玩意,一開始也不知道幹嘛的。後面發現如果不起這個程式的話。找不到對應的 程式日誌 執行 gops 檢視當前執行的...

Linux使用指令碼進行程式打包

linux下打包軟體,該方法實際上是將鏈結庫放在一起,然後直接執行可執行檔案,不會運用到打包軟體,直接使用指令碼。gedit pack.sh bin sh exe turframe 可執行檔名 des home turing adt package 可執行檔案路徑 deslist ldd exe a...

如何使用perf進行程式分析

1.安裝。sudo apt get install linux tools 如果提示沒有可安裝候選。請輸入 sudo apt get install linux perf version 其中version為你需要的版本。最好與核心版本相同。安裝完成後輸入 perf top 如可以執行,則安裝成功。...