欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、前言

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

二、如何生成共享庫

我們來寫一個實(shí)現(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 將源文件編譯成目標(biāo)文件

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

(2.2-1)

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

使用gcc將目標(biāo)文件鏈接成共享庫。共享庫的命名通常遵循特定的約定,例如在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)
運(yùn)行結(jié)果如下:

(3.2-2)

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

相關(guān)文章

  • 淺談mwArray和一般數(shù)組的區(qū)別

    淺談mwArray和一般數(shù)組的區(qū)別

    下面小編就為大家?guī)硪黄獪\談mwArray和一般數(shù)組的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++實(shí)現(xiàn)LeetCode(127.詞語階梯)

    C++實(shí)現(xiàn)LeetCode(127.詞語階梯)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(127.詞語階梯),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置)

    C++實(shí)現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++二級指針和指針的引用

    C++二級指針和指針的引用

    這篇文章主要介紹了C++二級指針和指針的引用,下文舉例實(shí)現(xiàn)形參指針改變實(shí)參指針?biāo)赶虻膶ο螅枰男』锇榭梢詤⒖家幌?,希望對你的學(xué)習(xí)有所幫助
    2022-03-03
  • C++用函數(shù)對算法性能進(jìn)行測試

    C++用函數(shù)對算法性能進(jìn)行測試

    算法無處不在,算法是程序的靈魂,而數(shù)據(jù)結(jié)構(gòu)則是程序的骨架,二者共同構(gòu)成了程序,那么如何評估算法的性能呢?理論上可以通過計(jì)算時間復(fù)雜度的方法來評估,但這是理性的認(rèn)識,我們還有一種直觀的評估方法,那就是程序執(zhí)行的時間
    2022-08-08
  • 用C語言進(jìn)行最基本的socket編程

    用C語言進(jìn)行最基本的socket編程

    這篇文章主要介紹了C語言下socket編程的基本知識講解,包括最基本的客戶端發(fā)送及服務(wù)器端接受數(shù)據(jù)的實(shí)現(xiàn),需要的朋友可以參考下
    2015-11-11
  • 詳細(xì)分析C++ 信號處理

    詳細(xì)分析C++ 信號處理

    這篇文章主要介紹了C++ 信號處理的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C++11學(xué)習(xí)之多線程的支持詳解

    C++11學(xué)習(xí)之多線程的支持詳解

    這篇文章主要為大家詳細(xì)介紹了C++11中多線程支持的相關(guān)資料,文中的示例代碼講解詳細(xì),對我們深入了解C++11有一定的幫助,需要的可以參考一下
    2023-02-02
  • MFC自繪Button按鈕分析和實(shí)現(xiàn)

    MFC自繪Button按鈕分析和實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了MFC自繪Button按鈕分析和實(shí)現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • ?C++模板template原理解析

    ?C++模板template原理解析

    這篇文章主要介紹了C++模板template原理,函數(shù)模板代表了一個函數(shù)家族,該函數(shù)模板與類型無關(guān),在使用時被參數(shù)化,根據(jù)實(shí)參類型產(chǎn)生函數(shù)的特定類型版本
    2022-07-07

最新評論