【发布时间】:2013-01-22 10:54:55
【问题描述】:
假设我的目标系统上有一个 x.so 库,而我的开发系统上没有。
我需要使用 gcc 在我的开发机器上编译一个程序,该程序使用 x.so 在目标机器上运行。
有什么办法吗?
【问题讨论】:
-
我相信您的开发系统中不能有 x.so,但我很好奇 - 为什么不呢?
假设我的目标系统上有一个 x.so 库,而我的开发系统上没有。
我需要使用 gcc 在我的开发机器上编译一个程序,该程序使用 x.so 在目标机器上运行。
有什么办法吗?
【问题讨论】:
是的。您根本不链接该库,而是使用 dlopen() 打开它:
void* dlhandle = dlopen("x.so", RTLD_LAZY);
并使用 dlsym() 从中加载符号:
some_func_pointer = dlsym(dlhandle, "function");
然后您可以通过从 dlsym() 获得的函数指针调用 function()。函数指针的类型当然必须与您正在加载的函数相匹配。它没有为您检查。
【讨论】: