【问题标题】:Error compiling allegro5 program using gcc on osx在 osx 上使用 gcc 编译 allegro5 程序时出错
【发布时间】:2017-04-20 16:05:09
【问题描述】:

我正在尝试在 Mac OSX 10.12 上编译一个简单的 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?我根据 allegro wiki 说明使用自制软件安装了它。 https://wiki.allegro.cc/index.php?title=Getting_Started#Mac_OS

【问题讨论】:

    标签: c macos gcc allegro


    【解决方案1】:

    这些是链接器错误。您需要链接到lallegro

    【讨论】:

    • 这就是-lallegro_main 的用途。据我所知,搜索路径和库路径是正确的。
    • lallegrolallegro_main 不同。 lallegro 提供了大部分核心功能,lallegro_main 仅用于主要功能(我认为仅适用于 MacOS)。虽然我没有看到 al_init 的未定义引用,但我可能在这里错了......
    • allegro_main 模块 depends on allegro 模块。所以我会尝试将-lallegro 标志添加到您的gcc 除了lallegro_main 调用
    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 2019-02-21
    • 2012-04-05
    • 2023-04-07
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2013-12-02
    相关资源
    最近更新 更多