我试图改变一个共享库中的特定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] 举报,一经查实,本站将立刻删除。