我有一个名为zone.c的程序,它使用allegro5库。
我有一个只包含这两行的makefile。
zone: zone.c
gcc zone.c -o zone $(pkg-config --cflags --libs allegro-5.0 allegro_primitives-5.0)
当我输入“make”时,我会收到以下错误:
/tmp/ccyCx3Hy.o:在函数main':
zone.c:(.text+0x14): undefined reference to
al_install_system'中
zone.c :(。text + 0x23):对al_create_display'
zone.c:(.text+0x3b): undefined reference to
al_map_rgb'的未定义引用
zone.c :(。text + 0x70):对al_clear_to_color'
zone.c:(.text+0x84): undefined reference to
al_map_rgb'的未定义引用
zone.c :(。text + 0xd1):对al_draw_filled_circle'
zone.c:(.text+0xe5): undefined reference to
al_map_rgb'的未定义引用
zone.c :(。text + 0x132):对al_draw_filled_circle'
zone.c:(.text+0x137): undefined reference to
al_flip_display'的未定义引用
zone.c :(。text + 0x14f):对al_rest'
zone.c:(.text+0x15b): undefined reference to
al_destroy_display'的未定义引用
collect2:错误:ld返回1退出状态
make: * [zone]错误1
但是,如果我只是复制出“gcc zone.c -o zone $(pkg-config --cflags --libs allegro-5.0 allegro_primitives-5.0)”这一行并手动运行,它编译得很好并且程序正常工作
如果我使用类似的makefile编译不使用allegro5的程序,那么就开始工作。
有人知道发生了什么事吗?
答案 0 :(得分:1)
如果您想在规则中使用文字$
,则必须通过编写$$
来将其从格式中删除:
zone: zone.c
gcc zone.c -o zone $$(pkg-config --cflags --libs allegro-5.0 allegro_primitives-5.0)