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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C 语言与动态库相关基础知识

發布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C 语言与动态库相关基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、導入文件<>和“”的區別

#include <xxx.h>導入的是標準目錄下的.h文件,所謂的標準目錄指的是:/use/local/include(一般是第三方頭文件)以及/use/incldue(一般是操作系統頭文件)、c:\\MinGnu\include(如果使用的是MinGun編譯器windows下的MinGun目錄)

#include "xxx.h"導入的是當前目錄下的文件

2、共享.h文件

2.1 把頭文件保存在標準目錄下,把文件復制到/usr/local/include中就可以在源代碼中使用尖括號包含它們,如:#include <encrypt.h>

2.2 在include中使用完整路徑,如把頭文件存放在/home/xinye中,只要使用#include "/home/xinye/encrypt.h"即可

2.3 在使用編譯命令的時候,告訴編譯器去哪里找到頭文件,所以用gcc 的-I選項,如:gcc -I/my_headfiles??test.c test2.c -o test

  將在標準目錄以及指定的目錄my_headfiles目錄下查找頭文件

3、共享.o目標文件

使用完整路徑名稱來共享.o目標文件

gcc -I/my_headfiles test1.c test2,c

  /my_obj_files/encrypt.o

  /my_obj_files/checksum.o

  -o test_code

4、歸檔多個.o文件 - 靜態庫

nm xxx.a:查看xxx.a中包含的.o文件列表  

ar -rcs libnfsecurity.a encrypt.o checksum.o

ar:歸檔命令

r:如果.a文件存在就更新它

c:表示創建文檔時不顯示反饋信息

s:告訴ar要在.a文件開頭創建索引

libnfsecurity.a:固定格式文件名,lib開頭,.a結尾

后面的是.o文件里誒波啊

5、在庫目錄中存放.a文件

5.1 存放在標準目錄中,如/use/local/lib(一般是在開發完成后,但是有些系統不允許用戶修改這個目錄)

   編譯了其他使用了庫的應用(libnfsecurity.a存放在標準目錄下)

  gcc test1.c tst2.c test3.c -lhfsecurity -o test

5.2 存放在其他目錄中(一般在開發中,或者是系統不允許放在標準目錄中)

  .a存放在自定義目錄/my_lib/lib/libhfsecurity.a

  gcc test1.c test2.c test3.c -L/my_lib -lhfsecurity -o test

6、動態庫

把c文件轉為動態庫之前需要先便以為.o文件:

gcc -I/my_head_dir -fPIC -c test1.c test2.c test3.c -o test.o

-fPIC:表示無關,一般可有可無

打包動態庫:

windows下:gcc -shared test.o -o c:\libs\test.dll

windows下的cygwin下:gcc -shared test.o -o /libs/libtest.dll.a

linux下面:gcc -shared test.o -o /libs/libtest.so

mac下面:gcc -shared test.o -o /libs/libtest.dylib

?

例子:

gcc -I/include -c elliptical.c -o elliptical.o

gcc elliptical.o -L/libs -lhfcal -o elliptical

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的C 语言与动态库相关基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

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