比如libdrv.so包含librq.a和libopt.a,而libopt.a又包括了一份librq.a。这样就会出现问题,linux-gcc/g++在link时,只会用一份。C库也应该是这样的。所以,结论就是,不要这样做,除非是其些utility func。
当有多个模块使用的lib时,建议最好是用.so动态库,这样修改方便,只需要更新.so就行了,其它模块都不需要重新编译。
多个.so如果存在重名的函数,编译系统不会报错,但程序执行就可能不正确。解决这个问题依赖于模块的命名规划。
比如libdrv.so包含librq.a和libopt.a,而libopt.a又包括了一份librq.a。这样就会出现问题,linux-gcc/g++在link时,只会用一份。C库也应该是这样的。所以,结论就是,不要这样做,除非是其些utility func。
当有多个模块使用的lib时,建议最好是用.so动态库,这样修改方便,只需要更新.so就行了,其它模块都不需要重新编译。
多个.so如果存在重名的函数,编译系统不会报错,但程序执行就可能不正确。解决这个问题依赖于模块的命名规划。