你错过的错误
#include <cstring>
#include <memory>
主要是由于GNU头文件中发生的清理:删除了不必要的头文件,因此程序没有为其使用的功能包含正确的头文件,从而导致编译错误。
关于
HAVE_SDL_H
您可能需要安装SDL库。一些Linux发行版(如Ubuntu)在库运行时和开发文件之间拆分包,因此您需要同时安装这两个包
sudo apt-get install libsdl1.2-dev
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -O3 -ffast-math -funroll-all-loops -g -O2 -I/usr/include -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -MT tick.o -MD -MP -MF ".deps/tick.Tpo" -c -o tick.o tick.cpp; \
then mv -f ".deps/tick.Tpo" ".deps/tick.Po"; else rm -f ".deps/tick.Tpo"; exit 1; fi
tick.cpp:144:5: error: #error "no timer implemented for your plateform"
有
未在中定义
config.h
. 当你看着
configure.in
AC_CHECK_HEADERS([SDL.h])
the autoconf manual
:
宏:AC_CHECK_头文件(头文件…,[action if found],[action if not found],[includes])
对于存在的空白分隔参数列表中的每个给定系统头文件头文件,定义HAVE_头文件(所有大写)。如果给定了action If found,则在找到其中一个头文件时执行额外的shell代码。您可以给它一个break值,以便在第一次匹配时中断循环。如果给出了未找到时的操作,则在未找到其中一个头文件时执行该操作。
AC_检查_头([SDL.h])
进行配置搜索
SDL.h
在里面
/usr/include
/usr/include/SDL/SDL.h
作为解决方法,请使用
CPPFLAGS
./configure CPPFLAGS="-I/usr/include/SDL"
现在您可能需要修复
配置.in
配置.in
使用
AM_PATH_SDL(1.2.0)
sdl-config --cflags
界定
SDL_CFLAGS
. (实施
AM_PATH_SDL
通常位于
/usr/share/aclocal/sdl.m4
# Check for SDL
AM_PATH_SDL(1.2.0)
LDFLAGS="$LDFLAGS $SDL_LIBS"
CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
AC_CHECK_HEADERS([SDL.h])
AC_LANG_CPLUSPLUS
sdl配置--cflags
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
但是那些
-I
和
-D
指令不应以
CFLAGS
无论如何,但在
autoconf manual
). 因此,我要说的是,“在SDL层面”已经出现了一些问题。
现在看一下
AC_LANG
documentation
:
C
C++
使用CXX和CXXCPP进行编译测试,并对测试程序使用extension.C。使用编译标志:CPPFLAGS与CxCpp,CPPFLAGS和CXXFLAGS与CXX。
移动
AC_LANG_CPLUSPLUS
AC_检查_头([SDL.h])
应该现在就用
g++
和
CXXFLAGS
在试图编译时
SDL.h
从那以后,你会成功吗
SDL_CFLAGS
CXXFLAGS
. (再说一次,它应该是真的
SDL_CPPFLAGS
但你不会改变SDL…)