我已經閱讀了有關共享和靜態庫相關教程,如:在創建共享庫期間的不同情況下,可以使用lib調用哪些函數?
"Creating a shared and static library with the gnu compiler [gcc]"
"Static, Shared Dynamic and Loadable Linux Libraries"
然而,不幸的是,他們所使用的所有例子是一個功能一個.c文件。
我有兩個問題:
(1)如果我有一個文件有兩個更多的功能,如example1.c
void ctest11(int *i)
{ *i = 5; }
void ctest12(int *i)
{ *i = 5; }
編譯exmaple1.c後libexample1.so,我可以調用ctest11和ctest12呢?
(2)如果我有一個文件具有兩個更多的功能,它們中的一個是主功能,例如example2.c
void ctest21(int *i)
{ *i = 5; }
void main(int *i)
{ *i = 5; }
編譯exmaple2.c到libexample2.so之後,是它的與僅用ctest21函數編譯一個.c文件相同?
(3)如果我有一個文件example3.c中和exmaple4.c 在example3.c中的funcion將使用功能在example4.c 例如: example3.c中
void ctest31(int *i)
{ *i = ctest41(2,3); }
範例4 .C
int ctest41(int a, int b)
{ return a+b; }
當我編譯example2.c和example3.c中以libexample23.so,我可以打電話都ctest31和ctest41?
但是,如果gcc example2.c example3.o到libexample2.so,我想我只能調用ctest31?
你確定要問真正的問題嗎?你的真正動機是什麼? (爲什麼'libexample2'中的'main'?) – 2013-04-10 19:03:41