[英]Turbo C++: Generate object code for malloc function
我正在使用Turbo C ++ 3.1。
我有一些需要C标准库的malloc的汇编模块。 所以我在我的.asm文件中有:
extern _malloc:proc
我想生成一个包含malloc()的目标文件。 为了使用链接器并构建可执行文件。 例:
tasm /zi bmlib.asm // create object file: bmlib.obj
tasm /zi bmlibt.asm // create object (which contains main program): bmlibt.obj
? //Generate object file for malloc: malloc.obj
tlink /v3 bmlibt bmlib malloc // link all modules
bmlibt.exe // Execute the program
如果您确实要在目标文件中使用Turbo C ++的malloc
,则可以使用tlib
从标准库中提取该目标文件。 副手,我不记得有什么确定地给予tlib
的标志,也不记得标准库的文件名,但是两者都应该很容易找到。
但是,您实际上并不需要这样做:如果仅在命令行上使用tcc
,它将自动编译并链接标准库中使用的模块。 不过,您实际上只需要在C中至少使用一个文件malloc
取决于C启动代码中发生的一些初始化,因此即使您成功链接了它,但没有该启动代码,它实际上将无法工作。
malloc()是C(或C ++)运行时库的一部分。 您可能可以告诉链接程序静态链接C运行时(通常称为CRT),但通常它是动态链接的,因此可执行文件的大小较小。 无论如何,通常都没有选择将运行时的malloc()实现内置到单独的目标文件中。 当然,如果您实现自己的版本,它将成为您目标文件的一部分。 在这种情况下,您的实现将覆盖系统的实现。
因此,我想您应该寻找的是一种告诉链接器您想与C运行时库静态或动态链接的方法。 然后,将程序集目标文件链接到最终可执行文件后,便可以对其进行访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.