【发布时间】:2017-07-07 11:38:32
【问题描述】:
我在运行程序时看到以下错误:
/usr/bin/getinfo: symbol lookup error: /usr/pkl/libinfo.so: undefined symbol: GetList
这个函数'GetList'在静态库liblist.a中定义,该库已链接到可执行文件/usr/bin/getinfo并使用gcc编译。当我运行“nm”命令时,我可以看到可执行文件 getinfo 中定义了符号。这是 nm 命令的输出:
root@pkl $ nm /usr/bin/getinfo | grep GetList
080a3d89 T GetList
我还使用 readelf 命令进行了检查,输出如下:
root@pkl $ readelf -a /usr/bin/getinfo | grep GetList
1080: 080a3d89 1777 FUNC GLOBAL DEFAULT 15 GetList
libinfo.so 共享库调用定义在 liblist.a 静态库中的函数 GetList。 libinfo.so 和liblist.a 都被列为可执行文件/usr/bin/getinfo 的依赖项。 liblist.a 不作为依赖项添加到 libinfo.so
我也做了objdump -S /usr/bin/getinfo | grep GetList 并且可以看到这个函数的汇编代码。但是,在运行程序时,它会因符号查找错误而崩溃。这不是共享库问题,我无法解决。请帮忙。
【问题讨论】:
标签: linux runtime loader symbols