【发布时间】:2017-09-24 17:57:49
【问题描述】:
我正在尝试编译一个简单的 c++ 程序,该程序调用 NDPI C 库中的一些函数。使用共享库(.so 文件)编译时,在库中找不到某些函数(如 set_ndpi_flow_malloc),但似乎能够找到另一个名为 set_ndpi_malloc 的函数。
注意:我相信它找不到的函数是从1.8版本更新到2.0版本时新添加到库中的,但我使用的库文件都是从2.0版本的源代码编译的。
奇怪的是,当我使用静态库 (.a) 进行编译时,找到这些函数没有问题。
查看上面链接的图片以查看每次编译器的输出和代码。 两次编译尝试都是在一分钟内完成的,除了 makefile 中的一行使用静态库而不是共享库进行编译之外,没有任何变化。
更新
这已被确定为库未导出所有符号的问题。
在 github 上查看问题:https://github.com/ntop/nDPI/issues/459
【问题讨论】:
-
-L后面好像有空格 -
@VTT 我删除了它并没有什么影响,但感谢您的建议
-
@BronislavElizavetin 我只是尝试使用和不使用 -lndpi i.imgur.com/cUofcCH.png
-
那您能说
nm -D ~/ndpi/precompiled/ndpi/lib/libndpi.a | more并在输出中查找那些缺失的符号吗?
标签: c++ c g++ shared-libraries