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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux+CLion+cmake 动态链接库的使用

發布時間:2023/12/10 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux+CLion+cmake 动态链接库的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在作《劍指offer》中的單向鏈表的題目時,需要一些常用到的操作鏈表的函數放在一個文件下,我想把這些函數的聲明都寫在list.h文件中,把這些函數的定義都寫在list.cpp文件中,這樣就可以在測試文件test.cpp中調用list.cpp中定義的函數,或者我還想把有關l鏈表操作的函數封裝成一個庫,安裝到電腦中,這個庫可以被外部程序調用。

首先看一下動態鏈接庫和靜態鏈接庫分別是什么

動態鏈接庫是以.so結尾的文件,靜態鏈接庫是以.a結尾的文件。

一種是LIB包含了函數所在的DLL文件和文件中函數位置的信息(入口),代碼由運行時加載在進程空間中的DLL提供,稱為動態鏈接庫dynamic link library。

一種是LIB包含函數代碼本身,在編譯時直接將代碼加入程序當中,稱為靜態鏈接庫static link library。

(所以無論是動態鏈接庫還是靜態鏈接庫,都會有lib文件)

1.首先是安裝鏈接庫

cmake是一個編程項目管理工具。

首先在你的工程目錄下創建 list.cpp,list.h, CMakeLists.txt文件,并創建一個lib文件夾來盛放生成的鏈接庫

然后是在CMakeLists.txt文件中添加如下語句

cmake_minimum_required(VERSION 3.5)

project(lib)

set(LIB_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

set(CMAKE_CXX_STANDARD 11)

set(LIST_SRC list.cpp)

ADD_LIBRARY(list SHARED ${LIST_SRC})

ADD_LIBRARY(list_static STATIC ${LIST_SRC})

INSTALL(TARGET list list_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)

INSTALL(FILES list.h DESTINATION include/list)

然后在終端操作安裝動態和靜態鏈接庫

mkdir build

cd build

cmake DCMAKE_INSTALL_PREFIX=/usr ../

make

sudo make install

如果安裝成功,那么就會顯示如下信息

--install configuration

--installing: /usr/local/lib/liblist.so

--installing: /usr/local/lib/liblist.a

--Up-to-date: /usr/local/include/list/list/h

2.外部程序使用安裝好的動態鏈接庫

在一個新的工程目錄下,你創建了test.cpp, CMakeLists.txt文件,在CMakeList.txt文件中寫入如下語句

cmake_minimum_required(VERSION 3.5)

project(ListWithDynamic)

set(CMAKE_CXX_STANDARD 11)

include_directories(/usr/local/include/list)

add_executable(ListWithDynamic test.cpp)

target_link_libraries(ListWithDynamic /usr/local/lib/liblist.so)

對于這種我們自己編寫安裝的鏈接庫,我們在使用的時候首先需要將鏈接庫的頭文件包含進來,就是這里的include_directories()函數實現這個功能,然后還需要將目標文件,就是這里的ListWithDynamic鏈接到liblist.so上,就是這里的target_link_libraries()函數實現這個功能,如果沒有這個函數,編輯器會提示錯誤,“undefined reference to 'CreateListNode'”?

?

3.使用下載安裝的第三方庫和使用自己編寫安裝的庫的一個在CMakeLists.txt的明顯不同是

請查看另一篇文章https://mp.csdn.net/postedit/82380445

?

?

?

總結

以上是生活随笔為你收集整理的Linux+CLion+cmake 动态链接库的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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