日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql.h 动态编译命令_Linux环境编译动态库和静态库总结

發布時間:2025/3/8 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql.h 动态编译命令_Linux环境编译动态库和静态库总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對Linux環境動態庫和靜態庫的一些基礎知識做一些總結,

首先總結靜態庫的編譯步驟。

1 先基于.cpp或者.c文件生成對應的.o文件

2將幾個.o文件 使用ar -cr命令 生成libname.a文件

libname.a 為靜態庫, name 為靜態庫的名字,

可以根據模塊功能命名。

舉個例子

在當前目錄下,有一個mymethod.h文件

在mymethod.cpp里實現這兩個函數

在當前目錄下有一個main.cpp文件

為了方便使用,將mymethod.cpp封裝成靜態庫和動態庫

首先將mymethod.cpp 編譯成目標文件

g++ -c mymethod.cpp -o mymethod.o

然后根據目標文件生成靜態庫

ar -cr libmymethod.a mymethod.o

ar命令可以用來創建、修改庫,也可以從庫中提出單個模塊

-c 選項表示 創建一個庫。不管庫是否存在,都將創建

-r 選項表示 將模塊插入庫,如果庫中有對應的模塊,那么進行更新

如果把多個.o文件插入庫.a里,只需要在后面用空格分開寫出來

格式

ar -cr 靜態庫libname.a ?name1.o name2.o

靜態庫的命名有規則,格式為lib+庫名+.a

生成靜態庫libmymethod.a后,

編譯main.cpp 連接靜態庫生成可執行文件main

g++ main.cpp -o main -I ./ -L ./ -lmymethod

-I選項表示頭文件路徑

-L表示靜態庫或者動態庫的路徑

鏈接靜態庫寫成 -l庫名即可:-lmymethod

運行./main 可以輸出結果

下面是動態庫的編譯

動態庫的命名是lib+庫名+.so

動態庫需要使用-shared 選項以及-fPIC選項

g++ -c -fPIC mymethod.cpp -o mymethod.o

-fPIC表示代碼是和地址無關的,不需要被不同模塊重定位

然后根據目標文件生成動態庫.so文件

g++ -shared -o libmymethodso.so mymethod.o

-shared 選項表示生成的是.so動態庫文件

下一步是鏈接動態庫

g++ main.cpp -o main -I ./ -L ./ -lmymethodso

此時不能直接運行./main否則會提示找不到對應的動態庫

上面的步驟可以直接寫成一句話

g++ -shared -fPIC mymethod.cpp -o libmymethodso.so

我們現在有幾種方式配置動態庫的路徑

第一種

export LD_LIBRARY_PATH="./:$LD_LIBRARY_PATH"

這種方式將動態庫路徑配置到LD_LIBRARY_PATH,只是暫時生效

第二種

使用 ldconfig 機制(需 root 權限):

● 首先,在 /etc/ld.so.conf.d/ 下創建一個 .conf 文件,

如 libmymethod.conf ,內容為共享庫所在目錄的絕對路徑

● 然后,運行 ldconfig

第一種比較簡單,配置好后可以直接運行./main

第二種按照操作進入/etc/ld.so.conf.d/,

然后創建mymethod.conf

用vi打開mymethod.conf,添加動態庫的絕對路徑

/home/secondtonone/soando

最后運行ldconfig, 即可生效了。

這樣就可以運行./main

現在對動態庫路徑配置做一個總結

解決共享庫路徑問題

gcc/g++ 編譯期 :

● 使用 -L 選項指定所需鏈接的共享庫所在目錄(如果共享庫或其連

接文件位于 /usr/lib 、 /usr/local/lib 或由 LD_LIBRARY_PATH 指定

的目錄下,則不需指定該選項)

● 使用 -l 選項指定所需鏈接的共享庫名稱(無前綴、后綴)

程序運行期:

● 使用 LD_LIBRARY_PATH 環境變量來指定所需引用的共享庫所在

目錄 ( 臨時指定或永久性寫入相關文件,普遍適用于 UNIX 世界 )

● 使用 ldconfig 機制(需 root 權限):

● 首先,在 /etc/ld.so.conf.d/ 下創建一個 .conf 文件,

如 libmymethod.conf ,內容為共享庫所在目錄的絕對路徑

● 然后,運行 ldconfig

我的公眾號,謝謝關注下。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql.h 动态编译命令_Linux环境编译动态库和静态库总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。