2013-10-13 53 views
0

我想自己编写一些libc函数(但不是所有的libc!),以提高程序的性能。但是GCC在编译的程序中使用它们而不是libc函数还是忽略它们?用户定义的函数能够代替libc的函数吗?

+0

检查GCC手册中的“弱链接”或“弱符号”。或者只是LD_PRELOAD。 –

+1

*用于提高我的程序的性能*如果您不得不问这个问题,libc可能不是性能瓶颈。 –

+0

你确实有一个自我认为你可以提高libc函数的性能,而我们其他人已经使用它没有任何问题。 –

回答

1

glibc中的所有公共符号都是weak linked,这意味着您可以提供自己的实现,它将在链接期间优先于弱符号。

所以,是的。你可以用相同的名称/参数来定义你自己的函数,它们会被用来代替。一定要查看头文件以查看函数的真实签名,某些函数可能是扩展到另一个函数的宏。

您还可以创建一个共享库,其中包含要覆盖的函数,并让动态链接器预加载它以覆盖共享库中的函数。有关更多信息,请参阅this question