【问题标题】:elocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC制作共享对象时不能使用针对“.rodata”的重定位R_X86_64_32;使用 -fPIC 重新编译
【发布时间】:2013-05-03 10:25:17
【问题描述】:

我的服务器在 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

【问题讨论】:

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


    【解决方案1】:

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

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

    以防万一我也安装libc6-dev

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-22
      • 2017-07-23
      • 2018-03-31
      • 1970-01-01
      • 2017-05-22
      • 2016-06-06
      • 1970-01-01
      相关资源
      最近更新 更多