0
我想在Mac OSX 10.12上编译一个简单的allegro5程序,但得到一个未定义的符号错误。下面是我在终端在osx上使用gcc编译allegro5程序时出错
gcc main.c -o hello -I/usr/local/include/ -L/usr/local/lib -lallegro_main
这里是我的代码运行的命令。
#include <stdio.h>
#include <allegro5/allegro.h>
int main(int argc, char **argv)
{
ALLEGRO_DISPLAY *display = NULL;
if(!al_init())
{
fprintf(stderr, "failed to initialize allegro!\n");
return -1;
}
display = al_create_display(640, 480);
if(!display)
{
fprintf(stderr, "failed to create display!\n");
return -1;
}
al_clear_to_color(al_map_rgb(0,0,0));
al_flip_display();
al_rest(10.0);
al_destroy_display(display);
return 0;
}
以下是错误我得到
Undefined symbols for architecture x86_64:
"_al_clear_to_color", referenced from:
__al_mangled_main in main-b86b99.o
"_al_create_display", referenced from:
__al_mangled_main in main-b86b99.o
"_al_destroy_display", referenced from:
__al_mangled_main in main-b86b99.o
"_al_flip_display", referenced from:
__al_mangled_main in main-b86b99.o
"_al_install_system", referenced from:
__al_mangled_main in main-b86b99.o
"_al_map_rgb", referenced from:
__al_mangled_main in main-b86b99.o
"_al_rest", referenced from:
__al_mangled_main in main-b86b99.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
难道我没有正确安装快板?根据allegro wiki的说明,我使用自制软件安装了它。 https://wiki.allegro.cc/index.php?title=Getting_Started#Mac_OS
这就是'-lallegro_main'的用途。据我所知,搜索路径和库路径是正确的。 –
'lallegro'与'lallegro_main'不一样。 'lallegro'提供了大部分的核心功能,'lallegro_main'只是主要功能(我认为这只是MacOS所必需的)。虽然我没有看到'al_init'的未定义参考,所以我可能在这里是错的... – rcorre
'allegro_main'模块[依赖于](http://liballeg.org/a5docs/trunk/getting_started.html) 'allegro'模块。因此,除了'lallegro_main'外,我会尝试在您的'gcc'调用中添加'-lallegro'标志 – rcorre