链接gcc没有文件的共享库?
假设我的目标系统上有一个x.so
库,我的开发系统上没有x.so
库。
我需要使用gcc编译我的开发机器上的程序,该程序使用该x.so
在目标机器上x.so
。
有没有办法做到这一点?
是。 您根本不链接该库,而是使用dlopen()打开它:
void* dlhandle = dlopen("x.so", RTLD_LAZY);
并使用dlsym()从中加载符号:
some_func_pointer = dlsym(dlhandle, "function");
然后,您可以通过从dlsym()获得的函数指针调用function()。 函数指针的类型当然必须与您正在加载的函数匹配。 它不会检查你。