Linux 在glibc';马洛克酒店

Linux 在glibc';马洛克酒店,linux,makefile,pthreads,reverse-engineering,glibc,Linux,Makefile,Pthreads,Reverse Engineering,Glibc,我想修改glibc的malloc函数来进行一些逆向工程工作,使用POSIX信号量来完成这项任务会非常方便。问题是我不知道如何在glibc的构建过程中正确链接pthread。如果有人能提供比参考手册更详细地解释构建过程的链接,或者帮助我解决这个问题,那将非常有帮助。POSIX信号量也由glibc本身实现,因此像malloc()(即:glibc是pthreads实现库) 相反,内部glibc函数使用由定义的互斥锁和rwlock样式的锁。您应该能够从这些构建块创建所需的信号量样式语义。您必须使用系统调

我想修改glibc的malloc函数来进行一些逆向工程工作,使用POSIX信号量来完成这项任务会非常方便。问题是我不知道如何在glibc的构建过程中正确链接pthread。如果有人能提供比参考手册更详细地解释构建过程的链接,或者帮助我解决这个问题,那将非常有帮助。

POSIX信号量也由glibc本身实现,因此像
malloc()
(即:glibc是pthreads实现库)


相反,内部glibc函数使用由定义的互斥锁和rwlock样式的锁。您应该能够从这些构建块创建所需的信号量样式语义。

您必须使用系统调用而不是pthread来实现信号量,因为pthread可能使用malloc it self。请检查或在此特定ca中的实现是的。谢谢。你可能知道一种更通用的方法来链接不使用malloc的库吗?通用方法-lmy_lib_no_malloc for GCC:)链接是一种将所有目标文件组合成所需二进制格式的可执行文件的方法,即ELF32/64、PE、COFF等。静态库只是一个包含目标文件的存档(zip文件),共享库(或DLL)与可执行文件相同,但没有可执行入口点。所以,当你链接时,你只是将目标文件和库合并成可执行文件。我指的是如何将特定库添加到glibc的构建过程中的一般方法,而不是如何将库与编译器链接。正如我所写的,没有任何标准方法存在,你只需要构建一个库或可执行文件(编译器本身只是一个程序),一切由您决定。例如,当msul或newlib不使用时,glibc使用额外的库展开。在任何情况下,它都被认为是C标准库(MS CRT、glibc、msul、dietlibc等)不依赖于任何其他库。如果您正在编写操作系统,C库是操作系统或硬件之间的标准化接口。如果您要返工/扩展glibc,可以从本书开始:“Richard M.Stallman-使用GNU编译器集合”