搜索
bottom↓
回复: 23

Linux下GCC编程,虽然函数已定义,但依旧提示未定义,怎么破

[复制链接]

出0入4汤圆

发表于 2016-5-15 16:27:34 | 显示全部楼层 |阅读模式
好几个C文件,一起编译,函数都是定义好的,.H文件里面也有声明
但是。。。

root@kali:/home/GUI# gcc main.c WINDOWS.C LCMDRV.C GUI_STOCKC.C GUI_BASIC.C FONT5_7.C FONT8_8.C FONT24_32.C LOADBIT.C MENU.C -o lcd
/tmp/ccwqRKjM.o: In function `main':
main.c:(.text+0x1e): undefined reference to `GUI_Initialize'
main.c:(.text+0x26): undefined reference to `GUI_SetColor'
main.c:(.text+0x2e): undefined reference to `GUI_WindowsDraw'
main.c:(.text+0x32): undefined reference to `GUI_Exec'
collect2: error: ld returned 1 exit status

新手,求解~

出0入0汤圆

发表于 2016-5-15 16:38:15 | 显示全部楼层
楼主能分清编译和链接的区别吗?那个错误是链接的时候出的。应该先用gcc把.c文件编译成.o然后再链接成可执行文件。

出0入4汤圆

 楼主| 发表于 2016-5-15 16:40:44 | 显示全部楼层
dawanpi 发表于 2016-5-15 16:38
楼主能分清编译和链接的区别吗?那个错误是链接的时候出的。应该先用gcc把.c文件编译成.o然后再链接成可执 ...

已试,无效,提示错误还是那样

出0入0汤圆

发表于 2016-5-15 16:44:28 | 显示全部楼层
xiaoyigechaos 发表于 2016-5-15 16:40
已试,无效,提示错误还是那样

命令发上来,多个文件最好makefile

出0入0汤圆

发表于 2016-5-15 18:03:58 来自手机 | 显示全部楼层
你定义了os支持,这个需要自己实现,

出0入0汤圆

发表于 2016-5-15 18:12:03 来自手机 | 显示全部楼层
换clang试试

出0入4汤圆

 楼主| 发表于 2016-5-15 18:16:00 来自手机 | 显示全部楼层
tangnyzl 发表于 2016-5-15 18:03
你定义了os支持,这个需要自己实现,

os支持是什么意思?请明示

出0入12汤圆

发表于 2016-5-15 19:23:52 | 显示全部楼层
GUI_Initialize 是在库里面实现的吗?没有制定要链接的库?

出0入0汤圆

发表于 2016-5-15 19:43:27 | 显示全部楼层
我再回复一次算了,我在ubuntu mate 16.04 64位版本中遇到同样的问题,我用clang编译器则同样的问题消失。也就是说同样的程序使用clang能够正常编译,而gcc就出现楼主位相同的错误。

出0入0汤圆

发表于 2016-5-15 19:48:25 | 显示全部楼层
没用过帮顶

出0入0汤圆

发表于 2016-5-15 20:00:38 | 显示全部楼层
头文件 没加入到编译吧

出0入0汤圆

发表于 2016-5-15 20:08:38 | 显示全部楼层
xiaoyigechaos 发表于 2016-5-15 18:16
os支持是什么意思?请明示

ucgui有个刷新的任务,如果配置时支持操作系统, 就需要开一个任务,来周期性地调用这个函数,修改
/*********************************************************************
*
*       Multi tasking support
*/
#define GUI_OS                    (0)  // Compile with multitasking support
估计就不需要了

出0入0汤圆

发表于 2016-5-15 20:17:50 | 显示全部楼层
这个肯定是没编译

出0入4汤圆

 楼主| 发表于 2016-5-15 20:42:11 来自手机 | 显示全部楼层
monkhooder 发表于 2016-5-15 19:43
我再回复一次算了,我在ubuntu mate 16.04 64位版本中遇到同样的问题,我用clang编译器则同样的问题消失。 ...

好的,我试试看

出0入4汤圆

 楼主| 发表于 2016-5-15 20:43:24 来自手机 | 显示全部楼层
tangnyzl 发表于 2016-5-15 20:08
ucgui有个刷新的任务,如果配置时支持操作系统, 就需要开一个任务,来周期性地调用这个函数,修改
/*** ...

是ZLG GUI 好像没有这个宏

出0入4汤圆

 楼主| 发表于 2016-5-15 20:44:32 来自手机 | 显示全部楼层
728196 发表于 2016-5-15 20:00
头文件 没加入到编译吧

也试过了……

出0入4汤圆

 楼主| 发表于 2016-5-15 20:46:02 来自手机 | 显示全部楼层
abutter 发表于 2016-5-15 19:23
GUI_Initialize 是在库里面实现的吗?没有制定要链接的库?

不是库,是自己写的函数

出0入4汤圆

 楼主| 发表于 2016-5-15 20:47:31 来自手机 | 显示全部楼层
oooios 发表于 2016-5-15 19:48
没用过帮顶

谢谢                    

出0入0汤圆

发表于 2016-5-15 20:48:53 | 显示全部楼层
本帖最后由 tangnyzl 于 2016-5-15 20:50 编辑

我还以为是 ucgui , ZLG GUI  是个玩具, 玩玩可以,用在项目上的风险有点大,n年以前玩过, n》5,发现不稳定,就放弃了,后来改用emwin +lpc,还免版权费

出0入4汤圆

 楼主| 发表于 2016-5-15 20:52:21 来自手机 | 显示全部楼层
tangnyzl 发表于 2016-5-15 20:48
我还以为是 ucgui , ZLG GUI  是个玩具, 玩玩可以,用在项目上的风险有点大,n年以前玩过, n》5,发现不 ...

Linux编程我还是新手,拿来玩玩的,但是现在好像玩不动……

出0入12汤圆

发表于 2016-5-16 15:03:08 | 显示全部楼层
xiaoyigechaos 发表于 2016-5-15 20:46
不是库,是自己写的函数

那在哪个文件里面定义的?

出0入0汤圆

发表于 2016-5-16 15:58:34 来自手机 | 显示全部楼层
链接顺序错也可能找不到

出0入4汤圆

 楼主| 发表于 2016-5-16 17:19:26 | 显示全部楼层
abutter 发表于 2016-5-16 15:03
那在哪个文件里面定义的?

LCMDRV.C   这个文件里

出0入4汤圆

 楼主| 发表于 2016-5-16 17:20:12 | 显示全部楼层
xwkm 发表于 2016-5-16 15:58
链接顺序错也可能找不到

之前也尝试调整一下文件的顺序了,好像不奏效
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 00:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表