基本概念我就不介绍了,网上有很多资料大家可以参考,我这里主要介绍工程实现。起初是因为买的摄像头涉及到二次开发,然后对方只给了一个静态库(.a文件)和一个头文件(.h),然后提供了一个说明文档,让我自己去开发,最开始还以为很简单,结果中途遇到各种问题。
1、静态库信息
首先,c语言生成的静态库(.a文件)和c++生成的静态库(.a文件)有点不一样,例如c调用c++生成的静态库和c++调用c++生成的静态库,过程会有细微的差别,这个大家可以查一下。所以对于拿到的第三方静态库,可以使用一下命令查看其相关信息:
#列出静态库(.a文件中)包含的所有.o文件及其对应的函数
nm -C *.a #-C的作用为输出符号重组过的函数名的原始名称
#列出.a文件中的所有.a文件,并显示来源于.cpp还是.c文件,显示的是符号重组后的函数名
readelf -s *.a
例如我手头的静态库用第二个命令后就显示的一些.cpp,表明来源于c++代码。
其次,还要了解该静态库所属平台,因为跨平台是没办法使用的,比如我手头的静态库是在x86_64下生成的,我直接拿到jetson nx上用,就会提示错误:/usr/bin/ld: skipping incompati