【问题标题】:Why doesn't gcc link an SDL 2.0 C project? (macOS) [duplicate]为什么 gcc 不链接 SDL 2.0 C 项目? (macOS)[重复]
【发布时间】:2020-02-03 19:45:41
【问题描述】:

我用 C 语言编写了一个简单的 Chip-8 仿真器(主要是从 this 获得灵感;老实说,只是用 C 语言重写它)。它使用我肯定已经安装的 SDL 2.0。

当我尝试编译文件 (gcc main.c chip8.c -o chip8) 时,我收到了一堆错误:

Undefined symbols for architecture x86_64:
  "_SDL_CreateRenderer", referenced from:
      _main in main-638d2a.o
  "_SDL_CreateTexture", referenced from:
      _main in main-638d2a.o
  "_SDL_CreateWindow", referenced from:
      _main in main-638d2a.o
  "_SDL_GetError", referenced from:
      _main in main-638d2a.o
  "_SDL_Init", referenced from:
      _main in main-638d2a.o
  "_SDL_PollEvent", referenced from:
      _main in main-638d2a.o
  "_SDL_RenderClear", referenced from:
      _main in main-638d2a.o
  "_SDL_RenderCopy", referenced from:
      _main in main-638d2a.o
  "_SDL_RenderPresent", referenced from:
      _main in main-638d2a.o
  "_SDL_RenderSetLogicalSize", referenced from:
      _main in main-638d2a.o
  "_SDL_UpdateTexture", referenced from:
      _main in main-638d2a.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我很确定我使用了正确的#include (#include "SDL2/SDL.h")。这是我的项目结构:

chip-8
—— main.c
–– chip8.c
–– chip8.h
–– INVADERS (rom file)

为什么链接器不能使用这个?是否需要任何其他编译器标志?

【问题讨论】:

  • 包含不是链接,“安装”一个库只是将它复制到您的硬盘驱动器。您必须明确告诉链接器您要链接哪些非默认库。

标签: c gcc sdl-2


【解决方案1】:

为什么链接器不能使用这个?是否需要任何其他编译器标志?

是的,您需要告诉链接器要链接哪些库,例如:

-lSDL2

How to use SDL with gcc?

【讨论】:

  • 谢谢,这解决了我的问题。一个标志是我认为丢失的东西,但我找不到任何关于它的信息。
猜你喜欢
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 2018-02-22
相关资源
最近更新 更多