[英]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.