【发布时间】:2014-03-23 00:25:10
【问题描述】:
出于安全原因,我正在集成一个 DRM 库,该库无法以明文形式保存在代码存储库中。 DRM 库仅在运行时在安全目标设备上时处于明文状态,因此它仅可用于在运行时进行链接。这给编译时链接带来了问题。
例如,如果我正在创建依赖于 DRM 库 libDrm.so 的 my_library.so,如果我只是使用“ld: cannot find -lDrm”从构建中删除 libDrm.so,则以下操作将失败 gcc -fPIC -shared -o my_library.so my_library.c -L。 -lDrm
我知道动态加载 libDrm.so 的符号是一种解决方案,但我不想在开发的这个阶段编写代码来进行动态加载。我正在寻找快速而肮脏的东西。我基本上想告诉 LD 忽略在编译时找不到 libDrm.so 的事实,因为 LD 将能够在运行时找到它。我怎样才能做到这一点?如果 LD 在运行时可用,我看不出它在编译时需要 libDrm.so 的原因,所以我希望 LD 足够灵活以允许这样做。
我目前正在考虑链接从存根编译的 libDrm.so 版本,只是为了让构建成功完成。在运行时,从实际实现创建的 libDrm.so 版本将被链接。
任何人都知道我可以与 LD 一起使用的深奥链接器选项,它只是告诉 LD 将所有与 libDrm.so 相关的链接操作推迟到运行时?
【问题讨论】:
标签: linux linker shared-libraries ld