编译IOS应用程序时库存在问题

时间:2014-07-30 04:50:06

标签: c++ ios linux opengl-es raspberry-pi

这是一个复杂的问题,所以让我提供一些背景信息,以便您在此处了解问题的全部内容。我对此也很陌生,到目前为止这是一次学习经历,所以如果我遗漏了一些明显或简单的问题,或者这个问题过于冗长和详细,我会道歉。

我正在尝试为Raspberry PI编译IOS应用程序。该应用程序是一个名为Sauerbraten的3D游戏/游戏引擎,我相信由于其低性能要求,开源性和实时地图编辑,在PI上进行娱乐,修补和教育使用会很棒。

它使用SDL和GL 1.x,并且我已经成功地构建并运行原始源而没有问题,除了显而易见的事实,它使用软件渲染运行,因此使用起来太慢。值得庆幸的是,之前有人将游戏移植到iPhone,因此移植到GLES,所以我决定使用它而不是重新编码GLES的原始版本。

由于我还是新手,我决定先尝试编译它,然后看看需要改变或修复的内容。这就是问题所在,我立即遇到了几个问题。首先,它似乎无法进入子目录,或者至少在其中找到标题。如果我尝试编译它,我得到这个:

pi@raspberrypi ~/cube/Saurbraten/trunk/src $ sudo make
make    -C enet/ all
make[1]: Entering directory `/home/pi/cube/Saurbraten/trunk/src/enet'
/bin/bash ./libtool --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"libenet\" -DPACKAGE_TARNAME=\"libenet\" -DPACKAGE_VERSION=\"1.3.0\" -DPACKAGE_STRING=\"libenet\ 1.3.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"libenet\" -DVERSION=\"1.3.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAS_GETHOSTBYADDR_R=1 -DHAS_GETHOSTBYNAME_R=1 -DHAS_POLL=1 -DHAS_FCNTL=1 -DHAS_INET_PTON=1 -DHAS_INET_NTOP=1 -DHAS_MSGHDR_FLAGS=1 -DHAS_SOCKLEN_T=1 -I. -Iinclude    -g -O2 -MT callbacks.lo -MD -MP -MF .deps/callbacks.Tpo -c -o callbacks.lo callbacks.c
libtool: compile:  gcc -DPACKAGE_NAME=\"libenet\" -DPACKAGE_TARNAME=\"libenet\" -DPACKAGE_VERSION=\"1.3.0\" "-DPACKAGE_STRING=\"libenet 1.3.0\"" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"libenet\" -DVERSION=\"1.3.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAS_GETHOSTBYADDR_R=1 -DHAS_GETHOSTBYNAME_R=1 -DHAS_POLL=1 -DHAS_FCNTL=1 -DHAS_INET_PTON=1 -DHAS_INET_NTOP=1 -DHAS_MSGHDR_FLAGS=1 -DHAS_SOCKLEN_T=1 -I. -Iinclude -g -O2 -MT callbacks.lo -MD -MP -MF .deps/callbacks.Tpo -c callbacks.c  -fPIC -DPIC -o .libs/callbacks.o
callbacks.c:6:18: fatal error: enet.h: No such file or directory
compilation terminated.
make[1]: *** [callbacks.lo] Error 1
make[1]: Leaving directory `/home/pi/cube/Saurbraten/trunk/src/enet'
make: *** [libenet] Error 2
pi@raspberrypi ~/cube/Saurbraten/trunk/src $ 

我解决了#39;这只是将/ src / enet / include / enet中的头文件复制到/ src / enet中。然后Enet成功编译,但我认为这可能是由一个更大的问题引起的一个问题,这也是我当前问题的原因。

我目前的问题是在尝试编译其余部分时,我得到了这个:

pi@raspberrypi ~/cube/Saurbraten/trunk/src $ sudo make
make    -C enet/ all
make[1]: Entering directory `/home/pi/cube/Saurbraten/trunk/src/enet'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/pi/cube/Saurbraten/trunk/src/enet'
g++ -O3 -fomit-frame-pointer -Wall -fsigned-char -Ishared -Iengine -Ifpsgame -Ienet/include -I/usr/X11R6/include `sdl-config --cflags` -o shared/cube.h.gch.tmp shared/cube.h
shared/cube.h:87:26: fatal error: SDL_opengles.h: No such file or directory
compilation terminated.
make: *** [shared/cube.h.gch] Error 1

我已尝试下载该标头并将其放入/ src / shared目录,但后来我明白了:

shared/cube.h:88:29: fatal error: OpenGLES/es1/gl.h: No such file or directory
compilation terminated.

即使修改标题使其指向gl.h的正确路径也不能解决或更改错误,所以此时我确定问题必须与makefile有关,但我不知道#39;知道问题是什么,因为作者已经编译它没有遇到麻烦。我希望这个问题不是太模糊,但在这一点上,我是一个全新的想法。我已经在Raspberry-PI论坛上问过,他们建议安装SDL2,它没有解决任何问题,可能是因为它没有使用SDL2。

编辑:我忘了提及环境是什么 - 我在Raspbian,有效地debian,使用' Make'命令,没有XCode或类似的。源没有配置文件。

1 个答案:

答案 0 :(得分:0)

编译时需要添加-Idirectory / to / include。

通常的做法是在CFLAGS(或CXXFLAGS)上添加它,因为您要为将要编译的所有对象指定包含文件夹。

对于您的情况(考虑到src位于系统的根目录中):

CFLAGS=-I/src/enet/include/enet
相关问题