【发布时间】:2018-10-06 07:57:19
【问题描述】:
我想修改 glibc 的 malloc 函数以进行一些逆向工程工作,使用 POSIX 信号量来完成任务会非常方便。问题是我不知道如何在 glibc 的构建过程中正确链接 pthread。如果有人可以提供比参考手册更详细地解释构建过程的链接,或者帮助我解决这个问题,那将是非常有帮助的。
【问题讨论】:
-
在这种特殊情况下确实如此。谢谢你。您是否知道更通用的方法来链接不使用 malloc 的库?
-
通用方法 - lmy_lib_no_malloc for GCC :) 链接是一种将所有目标文件组合成所需二进制格式的可执行文件的方法,即 ELF32/64、PE、COFF 等。静态库只是一个存档(zip文件)与目标文件,共享库(或DLL)与可执行文件相同,但没有可执行入口点。因此,当您链接时 - 您只需将目标文件和库组合成可执行文件。
-
我指的是如何将特定库添加到 glibc 的构建过程的一般方法,而不是如何将库与编译器链接。
-
正如我所写 - 不存在任何标准方法,您只需要构建一个库或可执行文件(编译器本身就是一个程序),一切都取决于您。例如,当 msul 或 newlib 不使用时,glibc 使用额外的 lib unwind。在任何情况下,都认为 C 标准库(MS CRT、glibc、msul、dietlibc 等)不依赖于任何其他库。如果您正在编写操作系统,C 库是操作系统或硬件之间的标准化接口。如果您打算重新编写/扩展 glibc,您可以从这本书开始:“Richard M. Stallman - 使用 GNU 编译器集合”
标签: linux makefile pthreads reverse-engineering glibc