目錄
- 1、代碼準備
- 2、生成靜态庫
-
- ①.生成目标檔案
- ②.生成靜态庫.a 檔案
- ③.使用.a檔案,建立可執行檔案(需保證.a檔案和.c檔案處于同一目錄下)
- ④.執行可執行檔案
- ⑤.執行結果
- 3、生成動态庫
-
- ①.生成目标檔案
- ②.生成動态庫.so檔案
- ③.建立可執行檔案
- ④.執行可執行檔案
- 4、錯誤以及解決方法
1、代碼準備
sub1.c
#include <stdio.h>
float x2x(int a, int b)
{
float result = a ^ b;
return result;
}
sub2.c
#include <stdio.h>
int x2y(int start, int end)
{
int result = 0;
for (int i = start; i <= end; i++)
{
result += i;
}
return result;
}
subs.h
#ifndef subs_H
#define subs_H
float x2x(int a, int b);
int x2y(int start, int end);
#endif
main1.c
#include <stdio.h>
#include "subs.h"
int main()
{
float result1 = x2x(1, 2);
int result2 = x2y(1, 10);
printf("result1 = %.2f\n", result1);
printf("result2 = %d\n", result2);
return 0;
}
2、生成靜态庫
①.生成目标檔案
打開終端,進入程式所在目錄,輸入:
gcc -c sub1.c sub2.c
執行成功之後會在目錄下生成對應的.o檔案,如圖所示:
②.生成靜态庫.a 檔案
接着輸入:
ar crv mylib.a sub1.o sub2.o
執行成功之後,終端會輸出:
并在目錄下生成一個.a靜态庫檔案,如圖所示:
③.使用.a檔案,建立可執行檔案(需保證.a檔案和.c檔案處于同一目錄下)
④.執行可執行檔案
./test
⑤.執行結果
3、生成動态庫
①.生成目标檔案
②.生成動态庫.so檔案
gcc -shared *.o -o myshare.so
生成結果:
③.建立可執行檔案
gcc -o test main1.c myshare.so
④.執行可執行檔案
./test
4、錯誤以及解決方法
當運作動态庫的可執行檔案時,可能會出現如下錯誤:
由于Linux系統自身系統設定的原因,隻能在/usr/lib 和 /lib 下搜尋對應的.so檔案,是以需要将建立的.so檔案移動至對應的目錄下
sudo cp myshare.so /usr/lib
之後再次執行,即可運作成功了