最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c程序生成并使用共享庫(kù)的操作方法

 更新時(shí)間:2024年09月19日 10:57:27   作者:標(biāo)標(biāo)大人  
在C語(yǔ)言開發(fā)中,共享庫(kù)可以減少程序體量并實(shí)現(xiàn)功能共享,本文詳細(xì)介紹了如何創(chuàng)建一個(gè)實(shí)現(xiàn)基本數(shù)學(xué)功能的共享庫(kù),并展示了其他程序如何利用這個(gè)庫(kù),步驟包括編寫源代碼、編譯成目標(biāo)文件、鏈接成共享庫(kù)以及如何在其他程序中使用這個(gè)庫(kù)

一、前言

在開發(fā)大型應(yīng)用或者是集成第三方功能(比如集成算法)的時(shí)候,通常都是直接調(diào)用共享庫(kù)中的接口的。使用共享庫(kù),不僅能夠避免程序體量過大,還便于多個(gè)程序使用公共的功能。
本文將介紹c程序如何生成共享庫(kù)以及其他程序如何使用該共享庫(kù)。

二、如何生成共享庫(kù)

我們來(lái)寫一個(gè)實(shí)現(xiàn)加減乘功能的共享庫(kù)。

2.1 編寫源代碼

math_func.c代碼如下:

/*************************************************************************
 * auther: conbiao
 * time: 2024/09/10
 ************************************************************************/
/************************************************************************
*                               HEADER
************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "math_func.h"
/************************************************************************
*Function Name: math_add()
*************************************************************************
* Summary:
*           caculate the sum of a and b
* Parameters:
*           a
*           b
* Return:
*           the sum of a & b
*
************************************************************************/
int math_add(int a, int b)
{
    return a + b;
}
/************************************************************************
*Function Name: math_sub()
*************************************************************************
* Summary:
*           caculate the sub of a and b
* Parameters:
*           a
*           b
* Return:
*           the sub of a & b
*
***********************************************************************/
int math_sub(int a, int b)
{
    return a - b;
}
/************************************************************************
*Function Name: math_multi()
*************************************************************************
* Summary:
*           caculate the product of a and b
* Parameters:
*           a
*           b
* Return:
*           the product of a & b
*
***********************************************************************/
int math_multi(int a, int b)
{
    return a * b;
}

頭文件math_func.h:

/*************************************************************************
        > File Name: math_func.h
        > Author: conbiao
        > Created Time: 2024年09月10日 星期二 10時(shí)43分06秒
 ************************************************************************/
#ifndef MATH_FUNC_H
#define MATH_FUNC_H
/***********************************************************************
 *                            HEADER
 ***********************************************************************/
#include <stdio.h>
/***********************************************************************
 *                        FUNCTION DECLARATION
 ***********************************************************************/
int math_add(int a, int b);
int math_sub(int a, int b);
int math_multi(int a, int b);
#endif

2.2 將源文件編譯成目標(biāo)文件

使用gcc編譯器將程序源碼編譯成目標(biāo)文件,并添加-fPIC以生成與位置無(wú)關(guān)的代碼,這是生成共享庫(kù)所必須的,如下所示:

(2.2-1)

2.3 將目標(biāo)文件鏈接成共享庫(kù)

使用gcc將目標(biāo)文件鏈接成共享庫(kù)。共享庫(kù)的命名通常遵循特定的約定,例如在Linux系統(tǒng)上,共享庫(kù)通常以 lib 開頭,并以 .so 結(jié)尾
如下圖所示:

(2.3-1)
如此共享庫(kù)就生成完成了。

三、使用共享庫(kù)

在其他程序中如果要使用共享庫(kù),方法如下:

3.1 編寫源碼

-/*************************************************************************
        > File Name: lib_test.c
        > Author: conbiao
        > Created Time: 2024年09月10日 星期二 11時(shí)13分11秒
 ************************************************************************/
#include <stdio.h>
#include "math_func.h"
/*************************************************************************
 *                                MAIN
 ************************************************************************/
int main(int argc, char* argv[])
{
    int a = 10;
    int b = 5;
    printf("a + b = %d\n",math_add(a,b));
    printf("a - b = %d\n",math_sub(a,b));
    printf("a * b = %d\n",math_multi(a,b));
    return 0;
}

3.2 編譯鏈接

編譯并鏈接程序時(shí),指定共享庫(kù)的位置,如下所示:

(3.2-1)
運(yùn)行結(jié)果如下:

(3.2-2)

到此這篇關(guān)于c程序生成并使用共享庫(kù)的操作方法的文章就介紹到這了,更多相關(guān)c程序共享庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中const應(yīng)放在類型前還是后

    C++中const應(yīng)放在類型前還是后

    之前遇到小伙伴問C++中const加在類型名前和變量名前的區(qū)別,今天給大家簡(jiǎn)單分析下。
    2016-05-05
  • C語(yǔ)言平衡二叉樹真題練習(xí)

    C語(yǔ)言平衡二叉樹真題練習(xí)

    平衡二叉樹又被稱為AVL樹(有別于AVL算法),且具有以下性質(zhì):它是一棵空樹或它的左右兩個(gè)子樹的高度差的絕對(duì)值不超過1,并且左右兩個(gè)子樹都是一棵平衡二叉樹。本文將詳解介紹一下平衡二叉樹的原理與實(shí)現(xiàn),需要的可以參考一下
    2022-04-04
  • C++中單調(diào)棧的基本性質(zhì)介紹

    C++中單調(diào)棧的基本性質(zhì)介紹

    這篇文章主要介紹了單調(diào)棧的基本性質(zhì)介紹,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)現(xiàn)假裝藍(lán)屏整蠱小程序

    C++實(shí)現(xiàn)假裝藍(lán)屏整蠱小程序

    因?yàn)楣ぷ鞯男枰?,有時(shí)候我們離開時(shí)并不想讓別人看到我們電腦的內(nèi)容,所以本文為大家分享了一個(gè)基于C++實(shí)現(xiàn)的假裝藍(lán)屏的小程序,需要的可以參考下
    2023-06-06
  • C語(yǔ)言qsort()函數(shù)的使用方法詳解

    C語(yǔ)言qsort()函數(shù)的使用方法詳解

    qsort是一個(gè)庫(kù)函數(shù),基于快速排序算法實(shí)現(xiàn)的一個(gè)排序的函數(shù),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言qsort()函數(shù)使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • C++?Qt利用GPU加速計(jì)算的示例詳解

    C++?Qt利用GPU加速計(jì)算的示例詳解

    這篇文章主要為大家詳細(xì)介紹了在?C++?和?Qt?中如何利用GPU加速計(jì)算,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • CMake的簡(jiǎn)單應(yīng)用

    CMake的簡(jiǎn)單應(yīng)用

    這篇文章主要介紹了CMake的簡(jiǎn)單應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • windows系統(tǒng)下C++調(diào)用matlab程序的方法詳解

    windows系統(tǒng)下C++調(diào)用matlab程序的方法詳解

    這篇文章主要給大家介紹了關(guān)于在windows系統(tǒng)下C++調(diào)用matlab程序的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • C++容器適配與棧的實(shí)現(xiàn)及dequeque和優(yōu)先級(jí)詳解

    C++容器適配與棧的實(shí)現(xiàn)及dequeque和優(yōu)先級(jí)詳解

    這篇文章主要介紹了C++容器適配與棧的實(shí)現(xiàn)及dequeque和優(yōu)先級(jí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • 解析C++編程中的#include和條件編譯

    解析C++編程中的#include和條件編譯

    這篇文章主要介紹了解析C++編程中的#include和條件編譯,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09

最新評(píng)論

班戈县| 绥中县| 张家港市| 珠海市| 肥城市| 扶余县| 东乡县| 长垣县| 临猗县| 黄大仙区| 丘北县| 长顺县| 台南县| 巴林右旗| 乡宁县| 城固县| 和田市| 德令哈市| 宁夏| 洪泽县| 化德县| 盐源县| 贡嘎县| 邹平县| 确山县| 泰和县| 石嘴山市| 汶上县| 左贡县| 交口县| 揭阳市| 酒泉市| 大足县| 晋州市| 瑞昌市| 巴林左旗| 邵阳县| 剑川县| 呼玛县| 惠安县| 黄冈市|