URN Logo
UNIX Resources » Linux » China Linux Forum » CPU 与 编译器 » 2 » 替掉so文件中的某个函数
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
替掉so文件中的某个函数
替掉so文件中的某个函数 - willbin [2007-07-02 12:04 | 1,153 byte(s)]
 
Re: 替掉so文件中的某个函数 - tpu [2007-07-02 16:59 | 445 byte(s)]
 
Subject: 替掉so文件中的某个函数
Author: willbin    Posted: 2007-07-02 12:04    Length: 1,153 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]
Subject: Re: 替掉so文件中的某个函数
Author: tpu    Posted: 2007-07-02 16:59    Length: 445 byte(s)
[Original] [Print] [Top]
已经讨论过了。参见此帖:
http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=linuxK&Number=649486&page=3&view=collapsed&sb=5&o=31&fpart=
----
精益求精!
[Original] [Print] [Top]
« Previous thread
我想用C语言开发一款与JDK1.4版兼容的javac编译器,大家觉得难度大吗?
CPU 与 编译器
2
Next thread »
如何使用powerpc8270(ppc603)的bat寄存器和cache.
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:47:07, cost 0.053369045257568 ms.