【问题标题】:Link shared library in gcc without file?在没有文件的情况下链接 gcc 中的共享库?
【发布时间】:2013-01-22 10:54:55
【问题描述】:

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

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

有什么办法吗?

【问题讨论】:

  • 我相信您的开发系统中不能有 x.so,但我很好奇 - 为什么不呢?

标签: c gcc linker


【解决方案1】:

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

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

并使用 dlsym() 从中加载符号:

some_func_pointer = dlsym(dlhandle, "function");

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2019-08-23
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    相关资源
    最近更新 更多