色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++基礎(chǔ)語法知識(shí)之鏈接裝載庫中Linux 的共享庫

C語言編程學(xué)習(xí)基地 ? 來源:C語言編程學(xué)習(xí)基地 ? 作者: C語言編程 ? 2021-11-01 10:15 ? 次閱讀

Linux 的共享庫(Shared Library)

Linux 下的共享庫就是普通的 ELF 共享對(duì)象。

共享庫版本更新應(yīng)該保證二進(jìn)制接口 ABI(Application Binary Interface)的兼容

命名

libname.so.x.y.z

x:主版本號(hào),不同主版本號(hào)的庫之間不兼容,需要重新編譯

y:次版本號(hào),高版本號(hào)向后兼容低版本號(hào)

z:發(fā)布版本號(hào),不對(duì)接口進(jìn)行更改,完全兼容

路徑

大部分包括 Linux 在內(nèi)的開源系統(tǒng)遵循 FHS(File Hierarchy Standard)的標(biāo)準(zhǔn),這標(biāo)準(zhǔn)規(guī)定了系統(tǒng)文件如何存放,包括各個(gè)目錄結(jié)構(gòu)、組織和作用。

/lib:存放系統(tǒng)最關(guān)鍵和最基礎(chǔ)的共享庫,如動(dòng)態(tài)鏈接器、C 語言運(yùn)行庫、數(shù)學(xué)庫等

/usr/lib:存放非系統(tǒng)運(yùn)行時(shí)所需要的關(guān)鍵性的庫,主要是開發(fā)庫

/usr/local/lib:存放跟操作系統(tǒng)本身并不十分相關(guān)的庫,主要是一些第三方應(yīng)用程序的庫

動(dòng)態(tài)鏈接器會(huì)在/lib、/usr/lib和由/etc/ld.so.conf配置文件指定的,目錄中查找共享庫

環(huán)境變量

LD_LIBRARY_PATH:臨時(shí)改變某個(gè)應(yīng)用程序的共享庫查找路徑,而不會(huì)影響其他應(yīng)用程序

LD_PRELOAD:指定預(yù)先裝載的一些共享庫甚至是目標(biāo)文件

LD_DEBUG:打開動(dòng)態(tài)鏈接器的調(diào)試功能

so 共享庫的編寫

使用 CLion 編寫共享庫

創(chuàng)建一個(gè)名為 MySharedLib 的共享庫

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)project(MySharedLib)
set(CMAKE_CXX_STANDARD 11)
add_library(MySharedLib SHARED library.cpp library.h)

library.h

#ifndef MYSHAREDLIB_LIBRARY_H#define MYSHAREDLIB_LIBRARY_H
// 打印 Hello World!void hello();
// 使用可變模版參數(shù)求和template <typename T>T sum(T t){    return t;}template <typename T, typename ...Types>T sum(T first, Types ... rest){    return first + sum(rest...);}
#endif

library.cpp

#include #include "library.h"
void hello() {    std::cout << "Hello, World!" << std::endl;}

so 共享庫的使用(被可執(zhí)行項(xiàng)目調(diào)用)

使用 CLion 調(diào)用共享庫

創(chuàng)建一個(gè)名為 TestSharedLib 的可執(zhí)行項(xiàng)目

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)project(TestSharedLib)
# C++11 編譯set(CMAKE_CXX_STANDARD 11)
# 頭文件路徑set(INC_DIR /home/xx/code/clion/MySharedLib)# 庫文件路徑set(LIB_DIR /home/xx/code/clion/MySharedLib/cmake-build-debug)
include_directories(${INC_DIR})link_directories(${LIB_DIR})link_libraries(MySharedLib)
add_executable(TestSharedLib main.cpp)
# 鏈接 MySharedLib 庫target_link_libraries(TestSharedLibMySharedLib)

main.cpp

#include #include "library.h"using std::cout;using std::endl;
int main() {
    hello();    cout << "1 + 2 = " << sum(1,2) << endl;    cout << "1 + 2 + 3 = " << sum(1,2,3) << endl;
    return 0;}

執(zhí)行結(jié)果

Hello, World!1 + 2 = 31+2+3=6

今天的分享就到這里了,大家要好好學(xué)C++喲~

編輯:jq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11312

    瀏覽量

    209701
  • 動(dòng)態(tài)
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    20658
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2110

    瀏覽量

    73686

原文標(biāo)題:C++基礎(chǔ)語法梳理:鏈接裝載庫丨Linux 的共享庫

文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux動(dòng)態(tài)鏈接庫的基本概念

    學(xué)習(xí)Linux動(dòng)態(tài)鏈接庫是一個(gè)繞不開的話題,我們今天就一起來看一下什么是動(dòng)態(tài)鏈接庫、動(dòng)態(tài)鏈接庫有什么好處、如何編譯出一個(gè)動(dòng)態(tài)鏈接庫等幾個(gè)關(guān)于
    發(fā)表于 09-27 14:31 ?1556次閱讀

    [分享資料]程序員的自我修養(yǎng)—鏈接、裝載

    譯、鏈接和運(yùn)行時(shí)刻所發(fā)生的各種事項(xiàng),包括:代碼指令是如何保存的,文件如何與應(yīng)用程序代碼靜態(tài)鏈接,應(yīng)用程序如何被裝載到內(nèi)存并開始運(yùn)行,動(dòng)態(tài)
    發(fā)表于 09-11 22:13

    Linux系統(tǒng)共享編程

    一、說明 類似Windows系統(tǒng)的動(dòng)態(tài)鏈接庫Linux也有相應(yīng)的共享用以支持代碼的復(fù)用
    發(fā)表于 09-13 16:49 ?24次下載

    C++動(dòng)態(tài)鏈接庫的創(chuàng)建和調(diào)用

    動(dòng)態(tài)連接的創(chuàng)建步驟: 一、創(chuàng)建Non-MFC DLL動(dòng)態(tài)鏈接庫 1、打開File —> New —> Project選項(xiàng),選擇Win32 Dynamic-Link Library —>sample project —>工程名:DllDemo
    發(fā)表于 11-24 18:13 ?7次下載

    Linux下靜態(tài)和動(dòng)態(tài)共享)的制作與使用

    Linux下靜態(tài)和動(dòng)態(tài)共享)的制作與使用Linux
    發(fā)表于 07-09 14:39 ?1178次閱讀

    c++標(biāo)準(zhǔn)手冊(cè)

    C++的標(biāo)準(zhǔn)手冊(cè),新手學(xué)習(xí)的好資料,同時(shí)也是開發(fā)人員的必備手冊(cè)。里面涵蓋了標(biāo)準(zhǔn)C++的所有的庫函數(shù)。
    發(fā)表于 11-03 14:05 ?43次下載

    你知道linux 靜態(tài)共享

    靜態(tài)鏈接庫和動(dòng)態(tài)鏈接庫的區(qū)別在于,主程序在運(yùn)行前,靜態(tài)鏈接庫鏈接固定寫入在程序,而動(dòng)態(tài)鏈接庫
    發(fā)表于 04-26 16:46 ?2904次閱讀

    linux共享程序剖析

    符號(hào)鏈接的原因。 共享程序是現(xiàn)代 UNIX? 系統(tǒng)中有效利用空間和資源的基礎(chǔ)。SUSE 系統(tǒng)C 程序
    發(fā)表于 04-02 14:35 ?296次閱讀

    Linux共享的構(gòu)造函數(shù)和析構(gòu)函數(shù)

    共享有類似C++類構(gòu)造和析構(gòu)函數(shù)的函數(shù),當(dāng)動(dòng)態(tài)加載和卸載的時(shí)候,函數(shù)會(huì)被分別執(zhí)行。一個(gè)函數(shù)加上 constructor的 attribute就成了構(gòu)造函數(shù);加上 destructo
    的頭像 發(fā)表于 06-22 09:18 ?2332次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>共享</b><b class='flag-5'>庫</b>的構(gòu)造函數(shù)和析構(gòu)函數(shù)

    嵌入式Linux下動(dòng)態(tài)和靜態(tài)使用

    以下主要介紹Linux 下動(dòng)態(tài)、靜態(tài)、如何使用已有的動(dòng)態(tài), 以及如何制作一個(gè)動(dòng)態(tài)Linux
    發(fā)表于 11-01 16:57 ?1次下載
    嵌入式<b class='flag-5'>Linux</b>下動(dòng)態(tài)<b class='flag-5'>庫</b>和靜態(tài)<b class='flag-5'>庫</b>使用

    C++基礎(chǔ)語法梳理Windows 的動(dòng)態(tài)鏈接庫

    [], TCHAR *envp[]); Windows 的動(dòng)態(tài)鏈接庫(Dynamic-Link Library) 部分知識(shí)點(diǎn)來自《Windows 核心編程(第五版)》 用處 (1)擴(kuò)展了應(yīng)用程序的特性 (2)簡(jiǎn)化了項(xiàng)目管理 (3)有助于
    的頭像 發(fā)表于 11-02 09:21 ?1790次閱讀
    <b class='flag-5'>C++</b>基礎(chǔ)<b class='flag-5'>語法</b>梳理<b class='flag-5'>之</b>Windows 的動(dòng)態(tài)<b class='flag-5'>鏈接庫</b>

    Linux下的靜態(tài)鏈接庫和動(dòng)態(tài)鏈接庫的區(qū)別是什么?

    學(xué)習(xí)Linux動(dòng)態(tài)鏈接庫是一個(gè)繞不開的話題,我們今天就一起來看一下什么是動(dòng)態(tài)鏈接庫、動(dòng)態(tài)鏈接庫有什么好處、如何編譯出一個(gè)動(dòng)態(tài)鏈接庫等幾個(gè)關(guān)于
    的頭像 發(fā)表于 02-17 10:49 ?1291次閱讀
    <b class='flag-5'>Linux</b>下的靜態(tài)<b class='flag-5'>鏈接庫</b>和動(dòng)態(tài)<b class='flag-5'>鏈接庫</b>的區(qū)別是什么?

    Linux的靜態(tài)共享

    是一個(gè)二進(jìn)制文件,包含的代碼可被程序調(diào)用。例如標(biāo)準(zhǔn)C、數(shù)學(xué)、線程等等。有源碼,可下載后
    的頭像 發(fā)表于 05-10 09:34 ?1049次閱讀

    CC++編寫環(huán)境下LabVIEW如何調(diào)用動(dòng)態(tài)?

    C語言編寫的動(dòng)態(tài)鏈接庫相比,不同的地方在于extern int “C” __declspec(dllexport) add(int x,int y) 這一導(dǎo)出語句,在C代碼
    發(fā)表于 06-11 09:15 ?7800次閱讀
    <b class='flag-5'>C</b>和<b class='flag-5'>C++</b>編寫環(huán)境下LabVIEW如何調(diào)用動(dòng)態(tài)<b class='flag-5'>庫</b>?

    如何查看linux程序共享呢?

    linux系統(tǒng),程序通常需要依賴于外部來正常工作。這些可以直接編譯到程序,也可以從共享
    的頭像 發(fā)表于 08-28 09:11 ?1611次閱讀
    如何查看<b class='flag-5'>linux</b>程序<b class='flag-5'>共享</b><b class='flag-5'>庫</b>呢?
    主站蜘蛛池模板: 欧美大香线蕉线伊人久久| 亚洲精品第一页| 深夜释放自己污在线看| 乌克兰黄色录像| 夜色私人影院永久入口| 2012中文字幕手机在线| 大香伊人久久精品一区二区| 国产在线一区观看| 免费看国产精品麻豆| 色大姐综合网| 野花社区视频WWW高清| babesvideos性欧美| 国产欧美一区二区三区视频| 久久永久影院免费| 日韩亚洲欧美中文高清在线| 亚洲免费综合色视频| 99久久热视频只有精品| 国产精品亚洲专一区二区三区| 快播免费电影| 天天躁日日躁狠狠躁AV麻豆| 中文字幕亚洲欧美在线视频| 光溜溜的美女直播软件| 精品国产mmd在线观看| 求个av网站| 一本到道免费线观看| 把腿张开再深点好爽宝贝| 黄色三级视频在线观看| 热久久伊大人香蕉网老师| 一区二区三区福利视频| 俄罗斯美女啪啪| 久久久精品久久久久特色影视| 日日夜夜影院在线播放| 在线免费观看a视频| 国产精品久久久久久久久LI无码| 麻豆狠色伊人亚洲综合网站| 香蕉尹人综合精品| HEYZO精品无码一区二区三区| 精品国产在线亚洲欧美| 熟妇内谢69XXXXXA片| 99久久免费国内精品| 精品亚洲欧美中文字幕在线看|