编译库时出现'undefined reference'错误

时间:2012-01-30 18:19:45

标签: c unix

我在代码中添加了第三方库,并在运行make时遇到这样的错误。请帮我理解这个错误。

(.text+0x9b4): undefined reference to `snd_strerror'
/home/bet/Tent/tun/app/Common/hl/lib/libGHAL.a(gfxhal.o): In function `GFX_create_region':
/home/bet/Tent/tun/app/Common/hl/src/GHAL/gfxhal.c:1141: undefined reference to `my_key_handler'
/home/bet/Tent/tun/app/Common/hal/src/GHAL/gfxhal.c:1141: undefined reference to `create_window'
collect2: ld returned 1 exit status
make[2]: *** [all] Error 1
make[2]: Leaving directory `/home/bet/Tent/tun/app/Common/c_app'
make[1]: *** [ctv_all] Error 2
make[1]: Leaving directory `/home/bet/Tent/tun/app/Common'

2 个答案:

答案 0 :(得分:7)

这些是链接错误,它告诉您链接器无法找到您正在使用的库的定义 您必须将库链接到您的项目。

gcc <your files for compilation> -lLibName

阅读 this 以便更好地理解。

答案 1 :(得分:0)

即使1)已安装readline库并且2)-lreadline已添加到gcc编译命令中,我仍然会收到错误消息。

我的问题的根本原因是库/代码的顺序:-lreadline(和其他库)应放在-o选项之前。