在链接时提供不同的库/功能

| 如果我想克隆一个库并仅更改一个函数(例如memcpy或memmove),并具有一个已建立的可执行链接以进行调试/探索,那么正确的方法是什么? 我猜想我需要对我的修改重新编译整个库,但是还有另一种方法吗? 我知道有些东西类似于malloc挂钩,但这似乎是malloc的一种特殊情况。 我对valgrind和gdb如何从另一个程序中执行此操作的细节感到好奇,如果有人对此有资源的话。 我对Mac和Linux解决方案感兴趣。在Linux上,我以前使用过LD_LIBRARY_PATH-除了库名称相同之外,我还需要做所有这些吗?我将如何在Mac上执行此操作? 对于那些对为什么要这样做的好奇的人,目的是为了进行实验音乐。我这样做是为了对内存操作进行声音处理,因此memcpy / memmove可以正常工作,但是访问的数据也将发送到声卡。我知道还有其他方法可以做到这一点(我已经做过其他几种方法了),但是目前我有兴趣关注memcpy / memmove,因此,如果您可以将答案限制在此范围内,我将不胜感激。     
已邀请:
您可以使用“ 0”使程序加载与通常的程序不同的共享库。但是,如果您只想替换一个函数(或几个)而不是整个库,则可以使用ѭ1来使链接器(ld.so)尽早加载特定的共享库,并且程序将使用符号(功能),而不是在通常的位置中寻找它们。     

要回复问题请先登录注册