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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux之动态库

發布時間:2023/11/30 linux 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux之动态库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

?

  

命令規則

  lib + 名字 + .so

制作步驟

  1)生成與位置無關的代碼(生成與位置無關的代碼)

  2)將.o打包成共享庫(動態庫)

發布和使用共享庫

?

動態庫運行原理:

生成動態庫:

  gcc -fPIC -c *.c -I ./include

打包動態庫并移動

使用動態庫:

/*** main.c ***/#include<stdio.h> #include"MyCalc.h"int main() {int a = 10;int b = 20;int result = a + b;printf("a + b = %d\n",result);return 0; }

ubuntu1604@ubuntu:~/wangqinghe/C/sharelib$ gedit main.c

ubuntu1604@ubuntu:~/wangqinghe/C/sharelib$ gcc main.c -Iinclude -L ./lib/ -lMyCalc -o myapp

ubuntu1604@ubuntu:~/wangqinghe/C/sharelib$ ls

app? include? lib? main.c? myapp? src

ubuntu1604@ubuntu:~/wangqinghe/C/sharelib$ ./myapp

a + b = 30

?

ldd 命令:查看程序執行時依賴的所有的庫

ubuntu1604@ubuntu:~/wangqinghe/C/sharelib$ ldd myapp

?????? linux-vdso.so.1 =>? (0x00007fffe8d13000)

?????? libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f92ffac7000)

?????? /lib64/ld-linux-x86-64.so.2 (0x00007f92ffe91000)

?

設置動態庫環境變量(臨時)

export LD_LIBRARY_PATH=./lib

永久生效:

bansh.rc

將export LD_LIBRARY_PATH=./lib(絕對路徑)

?

解決動態庫無法加載

  • 需要找到動態鏈接器的配置文件
  • 動態庫的路徑寫到配置文件中
  • 更新 ?sudo idconfig -v
  • ?

    cd etc

    ls -l ld.so.conf

    vi ld.so.conf

    (o 在當前行下行創建一行)

    將動態庫路徑寫到該配置文件中(絕對路徑)

    sudo idconfig -v

    動態庫的優點:

  • 執行程序體積小
  • 動態庫更新方便(接口沒變)
  • ?

    缺點:

  • 發布程序時,需要將動態庫發布給用戶
  • 加載速度較靜態庫較慢
  • 轉載于:https://www.cnblogs.com/wanghao-boke/p/11294197.html

    總結

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

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