动态库配置思路:通过头文件.h对需要调用的动态库的函数进行声明,然后在cpp文件进行函数的具体实现,并通过交叉编译,实现动态库函数的编译,最终生成一个头文件加一个.so文件(linux下的动态库文件)。步骤如下:
1,在codelite中创建动态库文件,设置如下
2.对动态库包含的工程中的头文件进行路径设置
3,工程中可能使用到的其他动态库函数,需要设置引用路径和动态库名字
4,这里编译新动态库虽然有引用到其他动态库,但是在完成编译后,就已经将需要使用到的函数,变量等嵌入到新的动态库文件了,路径就不再会影响新的库文件的使用了
5,在完成环境设置以后(build文件夹下包含各类编译环境,编译环境会直接影响程序是否能通过编译),右键workspace,选择build workspace,完成编译。
6,生产了libw.so的库文件,那么在工程中要调用库文件时,首先将头文件.h放在工程调用的头文件夹中,然后把.so文件放在工程调用的动态库文件夹中,并在调用工程的setting中设置头文件路径,动态库路径以及引用库名字,然后编译,生成的bin文件下的文件即可用于板件的程序。
问题记录:1,若在计算机上存在多份同命名的源文件,可能会导致cpp读取到别的头文件,导致一些定义或者声明的缺失。调试方法:在找不到声明的头文件中屏蔽其他声明,看有没有加报错,没有则说明没有读到这个头文件,使用everything查找本地是否有同名文件。
2.在windows环境下,动态库函数需要加关键字来声明可以被调用,没有关键字可能导致无法调用到函数,但是在交叉编译下不需要该关键字,且关键字会导致报错。因为在 Linux 平台上源文件中的所有函数都有一个的visibility属性,默认导出。如果要隐藏所有函数导出,则需要在GCC编译指令中加入 -fvisibility=hidden
参数。