LinuxC 第十五天

2021-09-02 14:10:30 字數 1227 閱讀 2027

靜態庫

靜態庫 要被包含到源程式中的庫

優點 執行速度快

缺點 占用系統資源比較多

使用的場合 對時間要求很高的場合

靜態庫的製作:

1、把所有的源程式(.c檔案)製作成目標檔案(.o 檔案)

gcc -c mul.c -o mul.o

gcc -c sub.c -o sub.o

gcc -c add.c -o add.o

2、使用工具將所有 .o 打包生成靜態庫檔案(靜態庫的字尾名是 .a )

ar rcs lib庫名.a mul.o sub.o add.o

3、編譯的時候 gcc 庫包含的相關命令

-l 庫檔案所在的目錄

-l(l的小寫) 包含要新增到程式中的庫,後面跟庫名即可

-i(i的大寫) 指定標頭檔案所在路徑

gcc  2.c  -l/home  -lmylib  -i../
動態庫製作

1、將要作為動態庫的檔案做成目標檔案檔案(.o)

注意和生成普通目標檔案的區別

gcc -c ***.c -o ***.o -fpic

2、將目標檔案編譯成動態庫,字尾名是 .so

gcc -shared -o lib庫名.so ***.o

3、編譯的時候需要把動態庫加上

gcc src/main.c -l./lib -lmylib -o bin/a.out

4、執行時候會找不到動態庫檔案,解決辦法:

1、臨時辦法,只在當前終端有效,終端重啟以後就沒用了

在終端輸入以下命令:

export ld_library_path=庫所在目錄的絕對路徑

2、修改終端的配置檔案 ~/.bashrc

§ vim ~/.bashrc

§ 把 export ld_library_path=庫所在目錄的絕對路徑

新增到檔案的最後一行

§ 重啟終端或者執行命令 source ~/.bashrc 使用配置檔案生效

3、將動態庫放到系統預設目錄下 ===> /usr/lib

4、配置檔案 /etc/ld.so.conf

§ vim /etc/ld.so.conf

§ 將庫檔案的絕對路徑新增到庫的最後一行

§ 使配置檔案生效:ldconfig -v

檢視可執行使用了哪些動態庫的命令:ldd 可執行檔案

動態庫和靜態庫在同乙個目錄下,預設包含的是動態庫

Qt第十五天

qwdialogsize.h ifndef qwdialogsize h define qwdialogsize h include namespace ui class qwdialogsize public qdialog endif qwdialogsize hqwdialogsize.cpp...

python第十五天

什麼是模組?一系列功能的集合 定義模組?建立乙個py檔案就是乙個模組,該py檔名就是模組名 怎麼使用模組?在要是用的模組檔案中通過import 模組名 來匯入模組 模組的四種方式?1 編譯執行模組所對應的py檔案,形成對應的pyc檔案 2 產生該模組自己的全域性命名空間 3 在適應該模組的全域性命名...

第十五天 模組

就是從邏輯上組織python 變數,函式,類,邏輯 實現乙個功能 本質就是.py結尾的python檔案 檔名是test.py的話,它的對應模組名就是test 用來從邏輯上元件模組,本質就是乙個目錄 必須帶有乙個 init py檔案 本質就是把python檔案解釋一遍 本質就是執行該報下的 init ...