xiaoyigechaos 发表于 2016-5-15 16:27:34

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

好几个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

新手,求解~

dawanpi 发表于 2016-5-15 16:38:15

楼主能分清编译和链接的区别吗?那个错误是链接的时候出的。应该先用gcc把.c文件编译成.o然后再链接成可执行文件。

xiaoyigechaos 发表于 2016-5-15 16:40:44

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

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

dawanpi 发表于 2016-5-15 16:44:28

xiaoyigechaos 发表于 2016-5-15 16:40
已试,无效,提示错误还是那样

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

tangnyzl 发表于 2016-5-15 18:03:58

你定义了os支持,这个需要自己实现,

monkhooder 发表于 2016-5-15 18:12:03

换clang试试

xiaoyigechaos 发表于 2016-5-15 18:16:00

tangnyzl 发表于 2016-5-15 18:03
你定义了os支持,这个需要自己实现,

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

abutter 发表于 2016-5-15 19:23:52

GUI_Initialize 是在库里面实现的吗?没有制定要链接的库?

monkhooder 发表于 2016-5-15 19:43:27

我再回复一次算了,我在ubuntu mate 16.04 64位版本中遇到同样的问题,我用clang编译器则同样的问题消失。也就是说同样的程序使用clang能够正常编译,而gcc就出现楼主位相同的错误。

oooios 发表于 2016-5-15 19:48:25

没用过帮顶

728196 发表于 2016-5-15 20:00:38

头文件 没加入到编译吧

tangnyzl 发表于 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
估计就不需要了

笑笑我笑了 发表于 2016-5-15 20:17:50

这个肯定是没编译

xiaoyigechaos 发表于 2016-5-15 20:42:11

monkhooder 发表于 2016-5-15 19:43
我再回复一次算了,我在ubuntu mate 16.04 64位版本中遇到同样的问题,我用clang编译器则同样的问题消失。 ...

好的,我试试看

xiaoyigechaos 发表于 2016-5-15 20:43:24

tangnyzl 发表于 2016-5-15 20:08
ucgui有个刷新的任务,如果配置时支持操作系统, 就需要开一个任务,来周期性地调用这个函数,修改
/*** ...

是ZLG GUI 好像没有这个宏

xiaoyigechaos 发表于 2016-5-15 20:44:32

728196 发表于 2016-5-15 20:00
头文件 没加入到编译吧

也试过了……

xiaoyigechaos 发表于 2016-5-15 20:46:02

abutter 发表于 2016-5-15 19:23
GUI_Initialize 是在库里面实现的吗?没有制定要链接的库?

不是库,是自己写的函数

xiaoyigechaos 发表于 2016-5-15 20:47:31

oooios 发表于 2016-5-15 19:48
没用过帮顶

谢谢                  

tangnyzl 发表于 2016-5-15 20:48:53

本帖最后由 tangnyzl 于 2016-5-15 20:50 编辑

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

xiaoyigechaos 发表于 2016-5-15 20:52:21

tangnyzl 发表于 2016-5-15 20:48
我还以为是 ucgui , ZLG GUI是个玩具, 玩玩可以,用在项目上的风险有点大,n年以前玩过, n》5,发现不 ...

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

abutter 发表于 2016-5-16 15:03:08

xiaoyigechaos 发表于 2016-5-15 20:46
不是库,是自己写的函数

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

xwkm 发表于 2016-5-16 15:58:34

链接顺序错也可能找不到

xiaoyigechaos 发表于 2016-5-16 17:19:26

abutter 发表于 2016-5-16 15:03
那在哪个文件里面定义的?

LCMDRV.C   这个文件里

xiaoyigechaos 发表于 2016-5-16 17:20:12

xwkm 发表于 2016-5-16 15:58
链接顺序错也可能找不到

之前也尝试调整一下文件的顺序了,好像不奏效
页: [1]
查看完整版本: Linux下GCC编程,虽然函数已定义,但依旧提示未定义,怎么破