【esp32程序编译提示undefined reference to ‘xxxx‘】

案例1:

【背景】
在使用SquareLine Studio设计UI时,成功导出UI代码,在编译代码的时候提示undefined reference to ‘ui_img_1869164015’,有一个变量无法识别,没有定义。
在这里插入图片描述
【定位步骤】
1.首先找到用这个变量的.c文件,位置
2.查看此.c文件包含的头ui.h文件中有没有变量ui_img_1869164015的定义 声明,发现有
3.然后就奇怪了,为什么编译说没有呢?

4.原因是在CMakeList.txt中没有加入入编译这个ui_img_1869164015.c这个文件。因为在LVGL重新生成的ui代码,多了这个文件
没有把新的.c加入编译

案例2:

同样报错如下:
在这里插入图片描述
main中调用的Bluetooth_int 函数在bluetooth.c中,也包含了头文件,但是编译就报错。
原因是bluetooth.c文件虽然存在,但是没有编译它
需要再CmakeLists.txt中添加编译(前面为了调试临时屏蔽了蓝牙相关内容,同时把bluetooth.c取消编译),等再次需要打开蓝牙时,确忘记添加到CmakeLists.txt中进行编译。
如下,添加即可,同时menuconfig中打开蓝牙相关开关项
在这里插入图片描述
总结:
属于低级错误,操作系统编程和裸机MCU不一样,esp32这里使用的Freertos系统,依赖CMake 做编译构建框架,.c文件必须加入CMakeList.txt才能被编译。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值