我必須使用另一個靜態庫構建共享庫。在該靜態庫中,有一些函數調用在nm output
中未定義。我想通過獲取目標文件來刪除這些符號。我無法刪除整個對象文件,因爲它的一部分被使用。有沒有辦法做到這一點。如何從.o文件中刪除未定義的符號
nm output
request.o:
U CLR_SECURE_MEM_START_ADDR //want to remove
U clrSMEMAlloc //want to remove
U clrSMEMCopy //want to remove
U clrSMEMFree //want to remove
U clrSMEMSet //want to remove
00000000 T copyBuffer
00000000 T copyParameter
00000000 T copyRequest
00000000 T freeParameter
00000000 T freeRequest
00000000 T getLinkFromRequest
U _gp_disp
00000000 T initializeRequest
00000000 T initializeRequestQueue
U isClrSMEMBuffer
00000000 T isParamInSharedMem
00000000 T isRequestInSharedMem
00000004 b RequestQueue
00000000 b RequestQueueHead
U strlen
00000000 T verifyParameter ////want to keep
00000000 T verifyParameterType
00000000 T verifyParameterTypes
00000000 T verifyRequestParameters
我沒有這個目標文件的來源,所以我不知道,我想刪除函數的原型。如果我有源碼,我可以編寫虛擬定義。 P.S 我的圖書館壞了。這就是爲什麼我有未定義的參考。
你不需要知道的虛擬函數的原型,因爲他們從來沒有真正被調用。 –
是的。正確。我使用了虛擬功能和它的工作。 –
你只需要確保這些虛擬函數實際上從來沒有被任何人調用過。 –