我正在尝试使用Digital Persona的免费Linux SDK库创建一个与指纹匹配的mysql UDF。我写了一个简单的UDF作为学习经验,工作得很好。但是,当我向Digital Persona的共享对象添加依赖项时,我无法再使用MySql来加载我的UDF。
我在DP的标题中添加了包含,并使用以下方法编译了我的UDF:
gcc -fPIC -Wall -I/usr/src/mysql-5.0.45-linux-i686-icc-glibc23/include -shared -o dp_udf.so dp_udf.cc
我也尝试添加-static参数,但每当我重新启动MySql时,都会收到错误:
Can't open shared library 'dp_udf.so' (errno: 0 /usr/local/mysql/lib/plugin/dp_udf.so: undefined symbol: MC_verifyFeaturesEx)
MC_verifyFeaturesEx是一个定义为“dpMatch.h”的函数,我在其中包含,并在libdpfpapi.so中实现,我尝试将其放在与dp_udf.so和/ usr / lib相同的位置。
我对gcc的调用是否有问题(我的C ++技能生锈)或者MySql不允许UDF使用其他共享对象吗?
答案 0 :(得分:1)
你的问题是你的库依赖于另一个,不是MySQL / dl不知道这个,因此不加载它。您需要将您的库与Digital Persona的库明确链接。您可以使用-l{libname}
(也许-L/lib/path
)来完成此操作。