在制作共享对象时,不能使用针对`.rodata'的重定位R_X86_64_32;用-fPIC重新编译

时间:2013-05-03 10:25:17

标签: ubuntu-12.04 levenshtein-distance shared-objects fpic

我的服务器在ubuntu 12.04上。

我正在尝试安装Levenshtein-MySQL-UDF:https://github.com/jmcejuela/Levenshtein-MySQL-UDF

我下载了.zip并在我的服务器上找到了levenshtein.c文件:/home/username/levenshtein.c

当我在终端输入以下命令时:

gcc -o levenshtein.so -shared /home/username/levenshtein.c -I /usr/include/mysql/

我发现了这个错误:

/usr/bin/ld: /tmp/ccCPQijg.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC

/tmp/ccCPQijg.o:无法读取符号:值不正确 collect2:ld返回1退出状态

我用谷歌搜索错误以找到如何解决它并安装build-essential,但是在我遇到同样的错误之后。

我不知道如何使用-fPIC正确地重新编译我必须重新编译的内容...

我发现了许多与我有点不同的主题,我不知道我现在可以做些什么来解决我的问题。

有人可以帮我吗?

谢谢; - )

BBFUNK01

1 个答案:

答案 0 :(得分:0)

我有同样的问题。安装build-essential后,使用-fPIC标志编译共享库:

gcc -fPIC -o levenshtein.so -shared /home/username/levenshtein.c -I /usr/include/mysql/

以防万一我也安装libc6-dev