2013-01-22 52 views
1

比方說,我的目標系統上有一個x.so庫,我的開發系統上沒有這個庫。在沒有文件的gcc中鏈接共享庫?

我需要使用gcc在我的開發機器上編譯一個程序,該程序在目標機器上使用該x.so運行。

有沒有辦法做到這一點?

+0

我相信你在開發系統上不能有x.so,但我很好奇 - 爲什麼不呢? – gcbenison

回答

2

是的。從它使用dlsym()

void* dlhandle = dlopen("x.so", RTLD_LAZY); 

和載荷符號:

some_func_pointer = dlsym(dlhandle, "function"); 

然後可以調用函數(你不反對該庫鏈接所有,而是使用dlopen打開它() )通過你從dlsym()得到的函數指針。函數指針的類型當然必須與你正在加載的函數匹配。它沒有檢查你。

+0

這可能會起作用。 – user1032861