• 正文
    • 一、靜態(tài)鏈接
    • 二、動態(tài)鏈接
  • 推薦器件
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

靜態(tài)鏈接和動態(tài)鏈接

2024/08/27
1486
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

一、靜態(tài)鏈接

靜態(tài)鏈接通過靜態(tài)庫進行鏈接,生成的目標程序中包含運行需要的所有庫,可以直接運行,不過就是文件比較大。靜態(tài)庫是匯編產(chǎn)生的.o文件的集合,一般以.a文件形式出現(xiàn)。gcc在使用靜態(tài)鏈接的時候需要加上-static參數(shù)。

二、動態(tài)鏈接

動態(tài)鏈接使用動態(tài)鏈接庫進行鏈接,生成的程序在執(zhí)行的時候需要加載所需要的動態(tài)庫才能運行,動態(tài)鏈接程序輕便,但必須依賴動態(tài)庫。Linux下的動態(tài)鏈接庫實際上是共享目標文件,一般是以.so文件形式存在。GCC默認是動態(tài)鏈接不需要加參數(shù)。

舉例子看一下動態(tài)鏈接庫的使用方法,創(chuàng)建三個C語言文件:mymath.c、mymath.h、test.c。

通過兩個變量相加的方式來舉例說明。

mymath.h添加內(nèi)容如下:

#ifndef __MYMATH_H_

#define __MYMATH_h_

#include<stdio.h>

extern int add(int a,int b);

#endif

mymath.c添加內(nèi)容如下:

#include "mymath.h"

int add(int a,int b)

{

return a+b;

}

最后來一個測試文件 test.c(在這里需要注意的一個小細節(jié),調用自己寫的.h文件時,必須使用雙引號,“xxxx.h”):

#include<stdio.h>

#include"mymath.h"

void main()

{

printf("2+3=%dn",add(2,3));

}

然后進行編譯,因為test引用了mymath.h,所以不能單獨編譯,gcc test.c mymath.c一起進行,否則就會報錯。(如下編譯正確)

接下來是生成動態(tài)鏈接庫的方法,gcc -shared xx -o xxx.so,當我們使用cat去進行查看的時候會發(fā)現(xiàn),so文件里全是亂碼,這就是使用動態(tài)鏈接庫的一個好處,可以防止核心算法的泄露。

現(xiàn)在就可以將mymath.c刪除掉了:

直接調用庫編譯發(fā)現(xiàn)程序不能運行。

下面將我們自己建立的庫移動到/usr/lib目錄下試試,然后發(fā)現(xiàn)代碼運行成功。

可以在Linux系統(tǒng)下自己嘗試下。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
AT24C02D-MAHM-T 1 Microchip Technology Inc IC EEPROM 2KBIT 1MHZ 8MINIMAP

ECAD模型

下載ECAD模型
$0.6 查看
SDINBDG4-16G-I1 1 Western Digital Corp Flash,
$18.31 查看
LTC6906HS6#TR 1 Linear Technology LTC6906 - Micropower, 10kHz to 1MHz Resistor Set Oscillator in SOT-23; Package: SOT; Pins: 6; Temperature Range: -40&deg;C to 125&deg;C
暫無數(shù)據(jù) 查看
飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設計和生產(chǎn)的高新技術企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設有華東、華南技術服務中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務網(wǎng)絡。公司研發(fā)的智能設備核心平臺廣泛應用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領域。

保定飛凌嵌入式技術有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設計和生產(chǎn)的高新技術企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設有華東、華南技術服務中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務網(wǎng)絡。公司研發(fā)的智能設備核心平臺廣泛應用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領域。收起

查看更多

相關推薦