微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

replacestring后出现符号查找错误

我试图改变一个共享库中的特定string,并运行与之链接的程序后,我得到这个错误

./prog: symbol lookup error: /home/user/lib/libprog.so: undefined symbol: have_qwerty,version PROG_PRIVATE

改变string的命令是:

sed -i "s/have_somewq/have_qwerty/g" ./libprog.so

理论上,这应该工作不pipe,因为这个string在使用这个库的所有文件和整个库中都被改变了。

那么这里有什么问题呢?

我该如何解决或debugging这个问题?

内存仍然可以与共享库一起工作

在C / C ++项目中find“undefined”引用

即使nm指示该符号存在于共享库中,也是未定义的符号引用

使用c / c ++编写的共享库的Linux C程序

NUMA机器上共享库的瓶颈

是否改变类私人数据成员的顺序会打破ABI

gdb无法打开共享对象文件

在Windows和LINUX中创build程序库

LLVM超出源代码构build:不支持可加载模块(在Linux上)

在另一台计算机上启动使用MinGW编译的Windows应用程序时出现库链接错误

sed -i“s / have_somewq / have_qwerty / g”./libprog.so

你想使用sed在二进制文件中更改符号名称吗? 这是不行的。 一个原因是,除了符号名称之外,共享库还在专用的部分中包含了他们的哈希值,如果不费很大的努力就不能修改

还要注意,符号具有PROG_PRIVATE版本,这可能意味着它并不意味着在库之外使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐