使用 SDL 1.2 和 C 创建可传输可执行文件时遇到问题
Trouble creating a transferable executable with SDL 1.2 and C
我在使用 SDL 1.2 和 C 编译可在另一台机器上运行的可执行文件时遇到了问题。我一直在使用 makefile 从 Ubuntu 编译它。我希望能够将“bin.zip”发送给同学,其中包含“SDL.dll”和“SDL_ttf.dll”以及我为之编译的可执行文件“prog”他们。
我希望他们能够 运行 从他们自己的 Ubuntu 桌面 (虚拟机,如果相关) 和不需要先自己安装 libsdl1.2debian
和 libsdl-ttf2.0-0
,因为我包含了 DLL。
请注意,一旦安装了这些库,他们就可以运行。
我的项目结构在编译时是这样的:
- 2048-c
- /bin(dll 和可执行文件)
- /include (.h" 头文件)
- /lib("SDL.lib", "SDL_ttf.lib", "SDLmain.lib")
- /src(“.c”源文件)
- “生成文件”
我的 makefile 如下所示:
CC=gcc
CFLAGS=-c -Wall `sdl-config --cflags`
LDFLAGS=`sdl-config --libs` -lSDL_ttf
SOURCES=src/main.c src/toolbox.c src/game.c
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=bin/prog
.PHONY: clean
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
.c.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm -f $(OBJECTS) $(EXECUTABLE)
我是不是遗漏了什么明显的东西?编辑:(是的,我是)
是的,我遗漏了一些明显的东西:DLL 专门用于 Windows
现在,至于让可执行文件在不安装所需库的情况下工作,我仍然没有做到(在我的情况下,静态链接没有成功),但至少我学到了一些东西。
如果我尝试交叉编译 Windows,我会尝试更新它。
我在使用 SDL 1.2 和 C 编译可在另一台机器上运行的可执行文件时遇到了问题。我一直在使用 makefile 从 Ubuntu 编译它。我希望能够将“bin.zip”发送给同学,其中包含“SDL.dll”和“SDL_ttf.dll”以及我为之编译的可执行文件“prog”他们。
我希望他们能够 运行 从他们自己的 Ubuntu 桌面 (虚拟机,如果相关) 和不需要先自己安装 libsdl1.2debian
和 libsdl-ttf2.0-0
,因为我包含了 DLL。
请注意,一旦安装了这些库,他们就可以运行。
我的项目结构在编译时是这样的:
- 2048-c
- /bin(dll 和可执行文件)
- /include (.h" 头文件)
- /lib("SDL.lib", "SDL_ttf.lib", "SDLmain.lib")
- /src(“.c”源文件)
- “生成文件”
我的 makefile 如下所示:
CC=gcc
CFLAGS=-c -Wall `sdl-config --cflags`
LDFLAGS=`sdl-config --libs` -lSDL_ttf
SOURCES=src/main.c src/toolbox.c src/game.c
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=bin/prog
.PHONY: clean
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
.c.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm -f $(OBJECTS) $(EXECUTABLE)
我是不是遗漏了什么明显的东西?编辑:(是的,我是)
是的,我遗漏了一些明显的东西:DLL 专门用于 Windows
现在,至于让可执行文件在不安装所需库的情况下工作,我仍然没有做到(在我的情况下,静态链接没有成功),但至少我学到了一些东西。
如果我尝试交叉编译 Windows,我会尝试更新它。