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

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

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

一、前言

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

二、如何生成共享庫

我們來寫一個實現(xiàn)加減乘功能的共享庫。

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時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 將源文件編譯成目標文件

使用gcc編譯器將程序源碼編譯成目標文件,并添加-fPIC以生成與位置無關的代碼,這是生成共享庫所必須的,如下所示:

(2.2-1)

2.3 將目標文件鏈接成共享庫

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

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

三、使用共享庫

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

3.1 編寫源碼

-/*************************************************************************
        > File Name: lib_test.c
        > Author: conbiao
        > Created Time: 2024年09月10日 星期二 11時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 編譯鏈接

編譯并鏈接程序時,指定共享庫的位置,如下所示:

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

(3.2-2)

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

相關文章

  • C++中const應放在類型前還是后

    C++中const應放在類型前還是后

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

    C語言平衡二叉樹真題練習

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

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

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

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

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

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

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

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

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

    CMake的簡單應用

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

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

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

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

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

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

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

最新評論

德州市| 延吉市| 河南省| 安庆市| 古浪县| 林芝县| 大埔区| 礼泉县| 合作市| 陕西省| 辽中县| 黔东| 台南县| 菏泽市| 建阳市| 太仓市| 太谷县| 尼木县| 墨竹工卡县| 卢氏县| 勃利县| 尚志市| 察哈| 垫江县| 桐柏县| 颍上县| 栖霞市| 赞皇县| 云梦县| 棋牌| 新乡县| 贡山| 永城市| 黄山市| 宁明县| 永丰县| 德钦县| 灵丘县| 南康市| 沅江市| 齐齐哈尔市|