我正在为Linux环境开发一个C项目(用gcc编译)。我正在使用两个库:
我的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"
出于某种原因,我收到了类型错误:
undefined reference to 'IMG_Load'
为什么?
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
答案 0 :(得分:0)
只需cd
到那些src / SDL_xxx dirs并执行make
来构建这些库,然后设置正确的-L和-I。它在链接上失败了所以-I是“好的”但是你的库的路径是不可能的
基本上链接器现在正在搜索其路径以查找libSDL_img和libSDL_ttf然后它还搜索/ usr / lib / x86_64-linux-gnu并且它仍然找不到它,这就是为什么你得到未定义的引用。
要解决此问题:首先构建那些SDL_xxx,然后搜索这些库的位置,并将其他类似的东西传递给gcc:
-Lsrc/SDL_img/lib -lSDL_img -Lsrc/SDL_ttf/lib -lSDL_ttf