我必须使用另一个静态库构建共享库。在该静态库中,有一些函数调用在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 我的图书馆坏了。这就是为什么我有未定义的参考。
你不需要知道的虚拟函数的原型,因为他们从来没有真正被调用。 –
是的。正确。我使用了虚拟功能和它的工作。 –
你只需要确保这些虚拟函数实际上从来没有被任何人调用过。 –