#include <stdio.h>
void show()
{
printf("Standard Object by gashero/n");
}
保存爲myso.c文件,按照如下編譯:
$ gcc -fPIC -shared -o libmyso.so myso.c
執行生成一個libmyso.so文件,按照Linux標準對象的命名慣例,應該在庫名稱之前加上"lib"前綴,儘管不是必須的。編譯開關-fPIC代表函數符號可以重定向,-shared代表編譯結果是一個標準對象。
不同於Win32DLL,Linux標準對象中的所有函數都是直接導出的,都可以被調用程序所訪問。下面我們編寫調用程序:
#include <stdio.h>
int main()
{
printf("Invoke my so/n");
show();
return 0;
}
保存爲invoke.c,按照如下gcc開關編譯:
$ gcc -o test invoke.c ./libmyso.so
編譯生成test可執行文件。如上編譯條件的最後一條需要是所調用的標準對象文件名,注意必須含有路徑。如果只是使用libmyso.so,則必須確保 這個文件在可訪問的PATH下面。本例所使用的文件名"./libmyso.so"是當前路徑下的,使用了相對路徑。
測試輸出結果如下:
$ ./test
Invoke my so
Standard Object by gashero