tft每日頭條

 > 科技

 > linux跨平台開發庫

linux跨平台開發庫

科技 更新时间:2024-07-08 16:00:54

前言:本實驗制作一個動态鍊接庫并使用,需要知道的是在linux系統下動态鍊接庫的後綴名是.so ,window系統中的動态鍊接庫後綴名為.dll

1、本次實現的代碼結構如下:

demo.c :實現庫函數将兩個整數相加

demo.h:函數原型放在.h文件裡提供給第三方調用

main.c 模拟第三方用戶,調用靜态庫

linux跨平台開發庫(linux系統下制作動态連接庫并使用)1

2、将demo.c制作成動态庫.so

demo.c以及demo.h内容如下:

// demo.c #include <stdio.h> /* 自己實現的兩個整數相加的函數,以靜态庫的形式提供, 調用者無需關注具體怎麼實現,隻知道調用的函數名, 以及參數 */ int my_add(int x,int y) { printf("in demo.c >_<.\r\n"); return x y; }

// demo.h #ifndef __DEMO_H__ #define __DEMO_H__ int my_add(int x,int y); #endif

在ubuntu環境下使用如下命令生成動态庫libdemo.so

linux跨平台開發庫(linux系統下制作動态連接庫并使用)2

-fpic是位置無關碼,-shared是按照共享庫的方式來鍊接

3、使用動态庫庫

在main.c裡調用動态庫的my_add函數,代碼如下:

#include <stdio.h> #include "demo.h" int main(void) { int sum = 0; sum = my_add(1,2); printf("sum = %d\r\n",sum); return 0; }

編譯以及連接動态庫的命令如下:

linux跨平台開發庫(linux系統下制作動态連接庫并使用)3

使用-ldemo就是告訴編譯器在libdemo.so裡找使用的函數。-L. 是指定連接器在那個目錄下尋找庫文件,句點.表示當前目錄。但是出現運行出錯。

由于可執行文件在運行的時候需要查找使用的動态庫一般是在/usr/lib目錄下,我們隻需拷貝libdemo.so到/usr/lib即可。

另外可以通過設置環境變量LD_LIBRARY_PATH,将libdemo.so所在目錄添加到環境變量即可

linux跨平台開發庫(linux系統下制作動态連接庫并使用)4

獲取相關代碼方式

linux跨平台開發庫(linux系統下制作動态連接庫并使用)5

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved