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

歡迎訪問 生活随笔!

生活随笔

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

linux

linux 如何产生so文件,printf()函数 【转】Linux下gcc编译生成动态链接库*.so文件并调用它(2)...

發布時間:2024/9/27 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 如何产生so文件,printf()函数 【转】Linux下gcc编译生成动态链接库*.so文件并调用它(2)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文僅限于介紹 linux 下的庫。

1.2、 庫的種類

linux 下的庫有兩種:靜態庫和共享庫(動態庫)。

二者的不同點在于代碼被載入的時刻不同。

靜態庫的代碼在編譯過程中已經被載入可執行程序,因此體積較大。

靜態用.a為后綴, 例如: libhello.a

共享庫(動態庫)的代碼是在可執行程序運行時才載入內存的,在編譯過程中僅簡單的引用,因此代碼體積較小。

動態通常用.so為后綴, 例如:libhello.so

共享庫(動態庫)的好處是,不同的應用程序如果調用相同的庫,那么在內存里只需要有一份該共享庫的實例。

為了在同一系統中使用不同版本的庫,可以在庫文件名后加上版本號為后綴,例如:libhello.so.1.0,由于程序連接默認以.so為文件后綴名。所以為了使用這些庫,通常使用建立符號連接的方式。

libbrokenlocale.so.1 libgcc_s.so libnss_dns-2.5.so libnss_nis.so.2 libthread_db-1.0.so。

兩者換算關系為:r=ln(1+r0)或r0=exp(r)-1例如r0=0.06,則r=ln(1+0.06)=0.0583,即100以583%的連續復利投資第二年將獲106,該結果與直接用r0=0.06計算的答案一致。

例如r0=0.06,則r=ln(1+0.06)=0.0583,即100以583%的連續復利投資第二年將獲106,該結果與直接用r0=0.06計算的答案一致。

a需=-103.6 ×ln(1-0.9975)÷0.08。

1.3、靜態庫,動態庫文件在linux下是如何生成的:

以下面的代碼為例,生成上面用到的hello庫:

#include 'hello.h'

void sayhello()

{

printf('hello,world ');

}

首先用gcc編繹該文件,在編繹時可以使用任何合法的編繹參數,例如-g加入調試代碼等:

$gcc -c hello.c -o hello.o

1、生成靜態庫 生成靜態庫使用ar工具,其實ar是archive的意思

$ar cqs libhello.a hello.o

2、生成動態庫 用gcc來完成,由于可能存在多個版本,因此通常指定版本號:

$gcc -shared -o libhello.so.1.0 hello.o

1.4、庫文件是如何命名的,有沒有什么規范:

在 linux 下,庫文件一般放在/usr/lib和/lib下,

靜態庫的名字一般為libxxxx.a,其中 xxxx 是該lib的名稱;

動態庫的名字一般為libxxxx.so.major.minor,xxxx是該lib的名稱,major是主版本號,minor是副版本號

1.5、可執行程序在執行的時候如何定位共享庫(動態庫)文件 :

而且,對于win8系統,它利用uefi安全啟動以及固件中存儲的證書與平臺固件之間創建一個信任源,可以確保在加載操作系統之前,近能夠執行已簽名并獲得認證的“已知安全”代碼和啟動加載程序,可以防止用戶在根路徑中執行惡意代碼。

單擊new,選擇python解釋器python.exe,打開后顯示出一個包含很多復選框的窗口,選擇需要加入系統pythonpath的路徑,單擊ok。

同理,單擊new,選擇d:\jython2.5.3目錄下的jython.jar包,打開后顯示出一個包含很多復選框的窗口,選擇需要加入系統pythonpath的路徑,單擊ok。

#你需要知道解釋器的完成路徑名稱。

對于 elf 格式的可執行程序,是由 ld-linux.so* 來完成的,它先后搜索 elf 文件的 DT_RPATH段—環境變量LD_LIBRARY_PATH—/etc/ld.so.cache 文件列表— /lib/,/usr/lib目錄找到庫文件后將其載入內存

本文來自電腦雜談,轉載請注明本文網址:

http://www.pc-fly.com/a/ruanjian/article-90979-2.html

總結

以上是生活随笔為你收集整理的linux 如何产生so文件,printf()函数 【转】Linux下gcc编译生成动态链接库*.so文件并调用它(2)...的全部內容,希望文章能夠幫你解決所遇到的問題。

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