中文
注册

指定pic、pie

错误信息

某些动态库在未使用pic/pie选项的情况下,会报符号表缺失的错误,比如:

undefined reference to `cmsPlugin'

问题介绍

生成动态库与pie可执行文件编译或链接时未带对应pic/pie选项,导致符号表缺失,需要手动指定。

代码示例

执行如下命令检查是否为PIC库,检索到textrel符号则表明是PIC库。

readelf -a libhello.so |grep -i textrel

检查是否为PIE共享文件,使用file命令查看,或者用size --format=sysv查看基地址是否在0附近。

解决方案

编译选项增加-fPIC,链接选项增加-pie

Clang严格区分编译和链接选项,不能通过cflags将-pie传递给链接器,否则会报错:

clang-10: error: argument unused during compilation: '-pie' [-Werror,-Wunused-command-line-argument]
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词