链接gcc没有文件的共享库?

时间:2013-01-22 10:54:56

标签: c gcc linker

假设我的目标系统上有一个x.so库,我的开发系统上没有这个库。

我需要使用gcc编译我的开发机器上的程序,该程序使用x.so在目标机器上运行。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

是。您根本不链接该库,而是使用dlopen()打开它:

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

并使用dlsym()加载符号:

some_func_pointer = dlsym(dlhandle, "function");

然后,您可以通过从dlsym()获得的函数指针调用function()。函数指针的类型当然必须与您正在加载的函数匹配。它不会为你检查。