0

我在我的测试环境中有这个工作,但我想我不知道我是怎么做到的。基本上,我正在尝试编译一个使用 RHash 函数的 MySQL UDF,但我是从 MySQL 服务器获取的

错误代码:1126。无法打开共享库“sha3.so”(错误号:0 /usr/lib/mysql/plugin/sha3.so:未定义符号: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


我已经看到了这个答案什么是未定义的引用/未解决的外部符号错误,我该如何解决?,但我很确定我已经正确设置了参数的顺序,但也许我错了,因为他们所有的例子都谈到在链接之前设置输出,这绝对不是我在这里做的。

4

1 回答 1

0

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

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

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

可能会根据操作系统和版本工作,但要确保这适用于所有内容,请-lrhashsha3.c(在这种情况下)之后移动

gcc -I/usr/include/mysql -o sha3.so -shared sha3.c -lrhash -fPIC
于 2018-02-28T14:10:03.567 回答