Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设x.so我的目标系统上有一个库,而我的开发系统上没有。
x.so
我需要使用 gcc 在我的开发机器上编译一个程序,该程序使用x.so.
有没有办法做到这一点?
是的。您根本不链接该库,而是使用 dlopen() 打开它:
void* dlhandle = dlopen("x.so", RTLD_LAZY);
并使用 dlsym() 从中加载符号:
some_func_pointer = dlsym(dlhandle, "function");
然后,您可以通过从 dlsym() 获得的函数指针调用 function()。函数指针的类型当然必须与您正在加载的函数相匹配。它没有为您检查。