gpt4 book ai didi

编译一个 C 项目和两个库

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:15 27 4
gpt4 key购买 nike

我正在为 Linux 环境开发一个 C 项目(使用 gcc 编译)。我正在使用两个库:

  • SDL image (源码保存在目录SDL_img)。
  • SDL TTF (源码保存在目录SDL_ttf)。

我的 CFLAGS 变量:

CFLAGS = -std=c99 -pedantic-errors -Wall -g -lm `sdl-config --cflags` -ISDL_img -ISDL_ttf

如您所见,我包括了这两个库目录。

我的 gcc 命令包括以下内容:

`sdl-config --libs` -lSDLmain -lSDL -lSDL_img -lSDL_ttf

最后,在我的项目中,我有以下内容:

#include "SDL_ttf.h"
#include "SDL_image.h"

出于某种原因,我收到以下类型的错误:

对“IMG_Load”的 undefined reference

为什么?

编辑:

all: Chess.o Commons.o Console.o Controls.o Coords.o File.o GameState.o GUI.o Keyboard.o List.o Minimax.o Move.o Piece.o SettingsState.o Slots.o Square.o Str.o
gcc $^ -lm -std=c99 -pedantic-errors -g -o Chess `sdl-config --libs` -lSDLmain -lSDL -lSDL_img -lSDL_ttf

最佳答案

只需 cd 到那些 src/SDL_xxx 目录并执行 make 来构建这些库,然后设置正确的 -L 和 -I。链接失败,所以 -I 是“好”,但您的库路径不正确

基本上链接器现在正在搜索其路径以查找 libSDL_img 和 libSDL_ttf 然后它还会搜索/usr/lib/x86_64-linux-gnu 但它仍然找不到它,这就是为什么你得到 undefined reference 。

要解决此问题:首先构建那些 SDL_xxx,然后搜索这些库在哪里,并将类似这样的东西与其他东西一起传递给 gcc:

-Lsrc/SDL_img/lib -lSDL_img  -Lsrc/SDL_ttf/lib -lSDL_ttf

关于编译一个 C 项目和两个库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32895936/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com