【发布时间】:2015-08-05 15:58:37
【问题描述】:
我正在构建一个 SDL2/C++ 程序,该程序需要移植到可能未安装 SDL 的 Windows、Mac 和 Linux 机器上。
我读过静态链接是解决方案,但我不太擅长编译并且不知道如何静态链接。
我的程序仅依赖于 SDL2、GLU 和 OpenGL。我正在使用 MinGW(在 Windows 8.1 上)或 gcc(在 Ubuntu 14.04 上)编译 C++——这两个操作系统都本地安装了 SDL。
这是我当前的 makefile,来自我的一位教授给我的示例 makefile:
# Executable/file name
EXE=experiment
# MinGW
ifeq "$(OS)" "Windows_NT"
CFLG=-O3 -Wall -DUSEGLEW
LIBS= -lSDL2 -lglu32 -lopengl32
CLEAN=del *.exe *.o *.a
else
# OSX
ifeq "$(shell uname)" "Darwin"
CFLG=-O3 -Wall -Wno-deprecated-declarations
LIBS=-framework SDL2 -framework OpenGL
# Linux\Unix\Solaris
else
CFLG=-O3 -Wall
LIBS= `sdl2-config --cflags --libs` -lGLU -lGL -lm
endif
# OSX\Linux\Unix\Solaris
CLEAN=rm -f $(EXE) *.o *.a
endif
# Dependencies
$(EXE).o: $(EXE).cpp FORCE
.c.o:
gcc -c -o $@ $(CFLG) $<
.cpp.o:
g++ -std=c++11 -c -o $@ $(CFLG) $<
# Link
$(EXE):$(EXE).o
g++ -std=c++11 -O3 -o $@ $^ $(LIBS)
# Clean
clean:
$(CLEAN)
# Force
FORCE:
【问题讨论】:
-
这个问题已经问了很多遍了,没有一个人能答对。 +1。
标签: static-linking sdl-2