linux代码动态分析软件,举例分析Linux动态库和静态库
函數庫分為靜態庫和動態庫兩種。創建Linux靜態庫和Linux動態庫和使用它們在這里將以舉例的形式詳述一下。靜態庫在程序編譯時會被連接到目標代碼中,程序運行時將不再需要該靜態庫。動態庫在程序編譯時并不會被連接到目標代碼中,而是在程序運行是才被載入,因此在程序運行時還需要動態庫存在。
第1步:編輯得到舉例的程序--hello.h、hello.c和main.c;
hello.h(見程序1)為該函數庫的頭文件。
hello.c(見程序2)是函數庫的源程序,其中包含公用函數hello,該函數將在屏幕上輸出"Hello XXX!"。
main.c(見程序3)為測試庫文件的主程序,在主程序中調用了公用函數hello。
--------------------------------------------------------------------------------
程序1:?hello.h
#ifndef?HELLO_H
#define?HELLO_H
void?hello(const?char?*name);
#endif?//HELLO_H
--------------------------------------------------------------------------------
程序2:?hello.c
#include
void?hello(const?char?*name)
{
printf("Hello?%s!\n",?name);
}
--------------------------------------------------------------------------------
程序3:?main.c
#include?"hello.h"
int?main()
{
hello("everyone");
return?0;
}
--------------------------------------------------------------------------------
第2步:將hello.c編譯成.o文件
無論靜態庫,還是動態庫,都是由.o文件創建的。因此,我們必須將源程序hello.c通過gcc先編譯成.o文件。在系統提示符下鍵入以下命令得到hello.o文件。
# gcc -c hello.c
第3步:由.o文件創建靜態庫
靜態庫文件名的命名規范是以lib為前綴,緊接著跟靜態庫名,擴展名為.a。例如:我們將創建的靜態庫名為myhello,則靜態庫文件名就是libmyhello.a。在創建和使用靜態庫時,需要注意這點。創建靜態庫用ar命令。在系統提示符下鍵入以下命令將創建靜態庫文件libmyhello.a。
# ar cr libmyhello.a hello.o
第4步:在程序中使用靜態庫
靜態庫制作完了,如何使用它內部的函數呢?只需要在使用到這些公用函數的源程序中包含這些公用函數的原型聲明,然后在用gcc命令生成目標文件時指明靜態庫名,gcc將會從靜態庫中將公用函數連接到目標文件中。注意,gcc會在靜態庫名前加上前綴lib,然后追加擴展名.a得到的靜態庫文件名來查找靜態庫文件。在程序3:main.c中,我們包含了靜態庫的頭文件hello.h,然后在主程序main中直接調用公用函數hello。下面先生成目標程序hello,然后運行hello程序看看結果如何。
# gcc -o hello main.c -L. -lmyhello
# ./hello
Hello everyone!
#
21/212>
總結
以上是生活随笔為你收集整理的linux代码动态分析软件,举例分析Linux动态库和静态库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux线程10s没有得到调度,操作系
- 下一篇: linux文件编辑操作,Linux下文本