本文共 467 字,大约阅读时间需要 1 分钟。
在Linux程序开发中,静态库和动态库的使用有着明显的区别,特别是在代码编译和链接流程中的处理方式不同。以下几点值得关注:
静态库(Static Library)和动态库(Dynamic Library)在程序编译时的处理方式有着本质区别。当代码作为第三方工具包被其他程序调用时,使用静态库(比如兵使用hpp 模式)具有优势:无需进行编译生成.so或.a文件即可进行链接。而使用C和C++的传统方式需要编译生成.o文件后再进行链接操作。
在文件包含方面,当xx2.cpp中包含xx1.cpp文件时,会出现文件重定义的问题。具体情况是:当xx2.cpp包含xx1.cpp,编译完成后,会在两个目标文件(xx1.obj和xx2.obj)中都找到xx1.cpp中的函数定义。这种情况会导致重定义错误。
在类似情况下,如果将xx1.cpp改名为xx1.h进行重编译后,仍会出现重名错误。这是因为编译工具在第一次编译时已将xx1.cpp中的函数定义编译到了目标文件中。为了突破这种限制,可以通过在第二次编译时更换文件名或其他方式实现代码的互斥。
转载地址:http://judxz.baihongyu.com/