codelite交叉编译动态库学习记录

本文详细介绍了在Linux环境下如何使用Codelite创建并编译动态库,包括设置头文件路径、引用其他动态库、配置编译环境以及在工程中调用动态库的步骤。同时,指出了可能出现的问题,如头文件冲突和Windows与Linux下动态库函数声明的差异,并提供了相应的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态库配置思路:通过头文件.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 参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值