我试图建立一个共享对象库,将由程序使用dlopen()打开。该库将使用静态单独库提供的功能。如何强制将静态库中的符号包含在共享库构建中?
我已经包含在链接行上相应的标志链接的动态一个当在静态库拉(例如我有-lfoo为libfoo.a),和接头不抱怨。但是,当主程序在动态库上调用dlopen()时,调用将失败,并引用静态库中的符号的“未定义符号”消息。
运行处确实表明,在讨论的符号的动态库是不确定的,并且主程序不包含它,所以我怎么能强制链接到拉这个符号?符号本身位于未初始化的数据部分(nm输出中的符号类型“B”)。
的'--whole-archive'答案会变成存档中的所有符号转换为共享库导出的符号。如果你只需要一个符号,这个答案会在你的.so中创建更少的膨胀。 – MuertoExcobito