|
|
|
|
 替掉so文件中的某个函数 - willbin [ 2007-07-02 12:04 | 1,153 byte(s)]
 Re: 替掉so文件中的某个函数 - tpu [ 2007-07-02 16:59 | 445 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
(贴在C编程区无人回答。移到CPU 与 编译器版。希望高手能指点一二)
如题。
举例说明:
1.一程序test动态链接libfoo.so
2.libfoo.so中有函数a,b,c,d(调用顺序a-b-c-d)
3.现欲将函数c的行为改变。即在程序test中调用a,b,d时链接libfoo.so而调用c时链接其他so
我的想法和实践:
1.为函数c生成一个动态库libc.so
2.修改程序test的makefile,添加库libc.so
3.编译=〉OK
4.设置环境变量LD_LIBRARY_PATH添加libc.so所在路径(添加在最开始)
实践结果:
程序test中的函数c并未被替换成libc.so中的实现。
疑问:
1.对上述想法和实践中的2项目中所作的实践有些理解不深。对于函数c来讲,它被指定了两个实现(一个在libfoo,so中,另一个在libc.so中),链接时居然没有报错,ld或者gcc又或者gmake是如何处理的。
2.对于动态库中的函数调用方式有什么全面的文章可以推荐吗?英文的也可以。他是调用一个函数时load一个,还是在调用一个函数时load所有。
3.导致上述实践不成功的原因是什么?(为什么函数c没有链接到libc.so)
4.如题,是否有解决方案。
不管任何教导,意见,讨论,我都非常期待。谢谢各位。
|
|
|
[Original]
[Print]
[Top]
|
|
|