Closed. This question is
not reproducible or was caused by typos。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为
on-topic用于堆栈溢出。
3个月前关闭。
Improve this question
我有一个我一生中从未遇到过的问题。
语境
我有一个针对ARM设备交叉编译的C程序。我使用LVGL库,它是嵌入式/灯光系统的图形库。
我已经按照MVC的方式组织了我的项目-所有 View 都在一个名为“屏幕”的文件夹中,该文件夹与我项目的src文件夹中的所有其他文件夹一样,都有自己的Makefile,由主Makefile调用。
具体来说,screens文件夹主要包含名为“image_x.c”,“screen_x.c”的文件-“image”文件是由在线转换生成的C文件,将图像放入数组中,而“screen”文件为我需要声明一个屏幕,加载图像,将其附加到此屏幕并显示该屏幕的源代码。这是一种功能,就像我到目前为止使用的那样,它可以根据我的需要复制和粘贴文件以及更改其中的内容。
问题
由于某种原因,这次,makefile会简单地忽略一个文件,尽管该文件位于该文件中并且位于该文件夹中。
我收到以下错误:
[...]
screen_loaderror.o: In function `createLoadErrorScreen':
/home/tohkai/mci_software/src/screens/screen_loaderror.c:33: undefined reference to `image_loaderror'
/home/tohkai/mci_software/src/screens/screen_loaderror.c:33: undefined reference to `image_loaderror'
[...]
我注意到在编译过程中没有提及“image_loaderror.c”(我已经切断了编译消息,因为它已经很长时间了,我有超过250K的代码行),应该在screen_loaderror.c之前:
[...]
CC /home/tohkai/mci_software/src/screens/screen_activityover.c
CC /home/tohkai/mci_software/src/screens/image_menu.c
CC /home/tohkai/mci_software/src/screens/screen_menu.c
CC /home/tohkai/mci_software/src/screens/screen_loaderror.c
CC /home/tohkai/mci_software/src/screens/image_anomalies.c
CC /home/tohkai/mci_software/src/screens/screen_anomalies.c
[...]
这是屏幕的Makefile的相关部分。同样,它不是整个makefile,因为它很大。如果您需要整个文件,我想我可以根据需要添加一些资源:
[...]
CSRCS += image_activityover.c
CSRCS += screen_activityover.c
CSRCS += image_menu.c
CSRCS += screen_menu.c
CRSCS += image_loaderror.c
CSRCS += screen_loaderror.c
CSRCS += image_anomalies.c
CSRCS += screen_anomalies.c
[...]
至于文件的内容,我肯定不能将其中一些内容放在这里,因为其中一些内容很长(我们正在说.PNG图片转换为int数组,因此文本无穷无尽),但实际上我在上面使用了相同的方法一遍又一遍。
image.c文件由转换器
https://lvgl.io/tools/imageconverter创建-它包含数组,该数组在表示文件的结构中设置,包含 header 信息和映射(即数组)
screen.c文件是一个文件,其中包含对库的调用以声明图像-使用image.c文件中给出的名称,然后将图像结构的地址传递给库的函数,以便稍后图像可以应用于屏幕。
该函数调用是编译错误中突出显示的行。同样,我的makefile文件似乎不存在该文件,尽管该文件存在于正确的文件夹中并被提供给makefile的源列表。
告诉我是否需要更多有关实例编译方法等makefile的信息