GCC 没有链接 RHash?
GCC not linking RHash?
我在我的测试环境中使用了这个,但我想我不知道我是怎么做到的。基本上,我正在尝试编译一个使用 RHash 函数的 MySQL UDF,但我是从 MySQL 服务器
获取的
Error Code: 1126. Can't open shared library 'sha3.so' (errno: 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
这也没有给出任何错误,但是当 运行ning
时我得到了 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?,但我很确定我已经正确设置了参数的顺序,但也许我错了,因为他们所有的例子都在谈论设置输出在 link 之前,这绝对不是我在这里所做的。
建议的问题,这是重复的对于刚开始使用 GCC 和 C/C++ 的人来说,可能有点太技术化了,所以虽然从技术上讲它可能是重复的,但我喜欢这个 question/answer 为和我在同一地点的人留在这里。
基本上,linux 的某些版本的编译步骤彼此不同,因此
gcc -I/usr/include/mysql -lrhash -o sha3.so -shared sha3.c -fPIC
可能会根据 OS 和版本工作,但要确保这适用于所有内容,请将 -lrhash
移动到 sha3.c
之后(在本例中),例如
gcc -I/usr/include/mysql -o sha3.so -shared sha3.c -lrhash -fPIC
我在我的测试环境中使用了这个,但我想我不知道我是怎么做到的。基本上,我正在尝试编译一个使用 RHash 函数的 MySQL UDF,但我是从 MySQL 服务器
获取的Error Code: 1126. Can't open shared library 'sha3.so' (errno: 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
这也没有给出任何错误,但是当 运行ning
时我得到了 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?,但我很确定我已经正确设置了参数的顺序,但也许我错了,因为他们所有的例子都在谈论设置输出在 link 之前,这绝对不是我在这里所做的。
建议的问题,这是重复的对于刚开始使用 GCC 和 C/C++ 的人来说,可能有点太技术化了,所以虽然从技术上讲它可能是重复的,但我喜欢这个 question/answer 为和我在同一地点的人留在这里。
基本上,linux 的某些版本的编译步骤彼此不同,因此
gcc -I/usr/include/mysql -lrhash -o sha3.so -shared sha3.c -fPIC
可能会根据 OS 和版本工作,但要确保这适用于所有内容,请将 -lrhash
移动到 sha3.c
之后(在本例中),例如
gcc -I/usr/include/mysql -o sha3.so -shared sha3.c -lrhash -fPIC