GCC没有链接RHash?

问题描述 投票:0回答:1

我有这个在我的测试环境中工作,但我想我无法弄清楚我是如何做到的。基本上,我正在尝试编译一个使用RHash函数的MySQL UDF,但我从MySQL服务器上得到这个

错误代码:1126。无法打开共享库'sha3.so'(错误:0 /usr/lib/mysql/plugin/sha3.so:undefined symbol:rhash_msg)

在服务器上我运行了这些

apt install rhash librhash-dev

我甚至从https://github.com/rhash/RHash下载了源代码(仅因为它还没有工作)并运行

./configure
make test
make install

哪个似乎没有给我任何错误,然后我编译

gcc -I/usr/include/mysql -lrhash -o sha3.so -shared sha3.c -fPIC

其中也没有给出任何错误,但是在运行时我得到MySQL错误

create function`sha3`returns string soname'sha3.so';

我在这里做错了什么?

以防万一,我的来源是https://gist.github.com/BrianLeishman/a0f40e7a0a87a7069c5c56a768ff3179


我已经看到了这个答案What is an undefined reference/unresolved external symbol error and how do I fix it?,但我很确定我已经正确设置了参数的顺序,但也许我错了,因为他们所有的例子都谈到在链接之前设置输出,这绝对不是什么我在这里干嘛

mysql gcc mysql-udf
1个回答
0
投票

对于从GCC和C / C ++开始的人来说,这个重复的建议问题可能有点太技术性,所以虽然它可能在技术上是重复的,但我希望这个问题/答案留在这里为和我一样的地方。

基本上,某些版本的linux执行不同的编译步骤,所以

gcc -I/usr/include/mysql -lrhash -o sha3.so -shared sha3.c -fPIC

可能会起作用取决于操作系统和版本,但为了确保这适用于所有内容,移动-lrhash之后sha3.c(在这种情况下)像

gcc -I/usr/include/mysql -o sha3.so -shared sha3.c -lrhash -fPIC
© www.soinside.com 2019 - 2024. All rights reserved.