Hi all,
First time posting. Just a little background. I am going to be building a house in the next couple of months and was looking to PlutoHome as a great home automation option. One question I do have is, can the Orbiter be run on a Zaurus. I have a Zaurus C3100 and am going to be in Japan again this month and I was thinking that if I can get it to compile for ARM, I would get a couple of Zaurus C1000's to use as Orbiters in the new house. Here is the Issue.
I have tried cross-compiling (using Damn Small Linux and the gcc-2.95 tool chain) as well as tried compiling it in Debian PocketWorkstation on the zaurus itself and seem to be running into problems. I am sure they are dependency related but I can't figure it out and was hoping that I could get some help.
Here is what I have tried:
Tried to compile SerializeClass on DSL using the command: make host=arm-linux
This is what I got:
bash-2.05b# make host=arm-linux
g++ -c -I./ -I../../ -I../ -I../DCE/ -I../../DCE -I../VIPShared/ -I../../VIPShared -I/usr/include/mysql -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_DEVEL_DEFINES -DUSE_LZO_DATAGRID -Wall -g -ggdb3 -D_GNU_SOURCE SerializeClass.cpp -o SerializeClass.o
In file included from ../SerializeClass/ShapesColors.h:5,
from SerializeClass.cpp:30:
../SerializeClass/SerializeClass.h: In method `void SerializeClass::Read_string(string &)':
../SerializeClass/SerializeClass.h:591: no matching function for call to `basic_string<char,string_char_traits<char>,__default_alloc_template<true,0> >::clear ()'
SerializeClass.cpp: In method `bool SerializeClass::SerializeRead(basic_string<char,string_char_traits<char>,__default_alloc_template<true,0> >, void * = 0)':
SerializeClass.cpp:405: warning: `void *' is not a pointer-to-object type
make: *** [SerializeClass.o] Error 1
I tried this one first because it seemed to have the fewest dependencies. I also tried PlutoUtils but ended up with this:
Computing dependencies for ProcessUtils.cpp done
Computing dependencies for Other.cpp done
Computing dependencies for MultiThreadIncludes.cpp done
Computing dependencies for FileUtils.cppFileUtils.cpp:39: warning: No include path in which to find http_fetcher.h
done
Computing dependencies for CommonIncludes.cpp done
g++ -c -I./ -I../../ -I../ -I../DCE/ -I../../DCE -I../VIPShared/ -I../../VIPShared -I/usr/include/mysql -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DUSE_LZO_DATAGRID -D_DEVEL_DEFINES -Wall -g -ggdb3 -D_GNU_SOURCE CommonIncludes.cpp -o CommonIncludes.o
CommonIncludes.cpp: In function `bool AskYNQuestion(basic_string<char,string_char_traits<char>,__default_alloc_template<true,0> >, bool, int = 0)':
CommonIncludes.cpp:49: warning: comparison is always true due to limited range of data type
g++ -c -I./ -I../../ -I../ -I../DCE/ -I../../DCE -I../VIPShared/ -I../../VIPShared -I/usr/include/mysql -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DUSE_LZO_DATAGRID -D_DEVEL_DEFINES -Wall -g -ggdb3 -D_GNU_SOURCE FileUtils.cpp -o FileUtils.o
FileUtils.cpp:39: http_fetcher.h: No such file or directory
make: *** [FileUtils.o] Error 1
I have installed libhttpfetcher-dev and there is a http_fetcher.h file in /usr/includes/ so I am not sure what the problem is.
Any and all help on this is appreciated. I would love to be able to pick up a couple of zaurii when I am in Japan to use as Orbiters ;)
I just re-read the post and there is some more information that I should include. The Zaurus runs on the 2.4.20 Embedix kernel using gcc-2.95. I realize it is a little old but that is what it runs on.
Also, is there a specific order I need to compile this stuff in? I have everything required for PlutoUtils (I think) except for cdrecorder. I guess I can always apt-get that and try again.
Let me know if there is any other information I can give you to help me figure this out.
Thanks,
Rob
Hi Rob,
You will need to compile SerializeClass, PlutoUtils and DCE first and then Orbiter. Indeed, gcc-2.95 is a little to old, we are using 3.3.5 right now.
Anyway, instead of that "str.clear();" you can try doing a str = "";
We will try to compile orbiter for Zaurus too, but I don't think this will be too soon.
For that http_fetcher.h, you can comment out the functions which uses it. Orbiter doesn't really need them.
Best regards,
Chris M.
Chris.m
Thanks for the help on that. I got SerializeClass (the str ="" worked) and DCE compiled (I had to download pluto_main from svn). Now I just need some help with PlutoUtils. I got past the http_fetcher problem but now I have a problem with locale in StringUtils.cpp. I'll post the stack trace here. It is complaining that it cannot find the path to locale. It is in /usr/bin which is in the PATH variable. I tried adding -I/usr/bin to the MakeFile but then it complained about an "unterminated character constant". When I type locale in a terminal window they all say en_US. Help?
Rob
Here is the error for PlutoUtils make
g++ -c -I./ -I../../ -I../ -I../DCE/ -I../../DCE -I../VIPShared/ -I../../VIPShared -I/usr/include/mysql -I/usr/bin -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DUSE_LZO_DATAGRID -D_DEVEL_DEFINES -Wall -g -ggdb3 -D_GNU_SOURCE StringUtils.cpp -o StringUtils.o
In file included from StringUtils.cpp:37:
/usr/bin/locale:2: unterminated character constant
/usr/bin/locale:107: unterminated character constant
/usr/bin/locale:149: unterminated character constant
/usr/bin/locale:150: unterminated string or character constant
/usr/bin/locale:4: possible real start of unterminated constant
make: *** [StringUtils.o] Error 1
Here is the result of locale+
root@zaurus:~/PlutoHome/PlutoUtils# locale
LANG=en_US
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=en_US
Hi Rob,
I guess you can comment that include too (#include <locale>) and eventually comment any function that might use it or provide a dummy implementation or those functions.
Chris M.
chris.m
OK. So I commented out locale and got a little farther but then got a bizarre error:
g++ -c -I./ -I../../ -I../ -I../DCE/ -I../../DCE -I../VIPShared/ -I../../VIPShared -I/usr/include/mysql -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DUSE_LZO_DATAGRID -D_DEVEL_DEFINES -Wall -g -ggdb3 -D_GNU_SOURCE getch.cpp -o getch.o
getch.cpp: In function `int THE_getch(bool, timeval *)':
getch.cpp:34: `fd_set' undeclared (first use this function)
getch.cpp:34: (Each undeclared identifier is reported only once
getch.cpp:34: for each function it appears in.)
getch.cpp:34: parse error before `;'
getch.cpp:37: `stdout' undeclared (first use this function)
getch.cpp:37: implicit declaration of function `int fflush(...)'
getch.cpp:49: `fdset' undeclared (first use this function)
getch.cpp:49: implicit declaration of function `int FD_ZERO(...)'
getch.cpp:50: implicit declaration of function `int FD_SET(...)'
getch.cpp:52: implicit declaration of function `int select(...)'
getch.cpp: In function `int getch_timeout(int)':
getch.cpp:82: variable `struct timeval timeout' has initializer but incomplete type
getch.cpp:83: confused by earlier errors, bailing out
make: *** [getch.o] Error 1
Any way around this one chris.m?
Rob
Hi,
You can remove getch.cpp from PlutoUtils/Makefile. It's not being used by Orbiter.
Chris M.
Chris.m
Thank you so much for your help to date. This is where I am.
I've been able to compile
libDCEcommon.so
libPlutoUtils.so
libSerializeClass.so
Now I am trying to compile Orbiter. It took a while but I have resolved most of the dependency problems. I just have a couple left.
When I run a make I get the following:
Computing dependencies for WizardLogic.cppWizardLogic.cpp:4: CreateDevice/UserUtils.h: No such file or directory
done
Computing dependencies for Linux/MouseBehavior_Linux.cppIn file included from Linux/OrbiterLinux.h:10,
from Linux/MouseBehavior_Linux.h:11,
from Linux/MouseBehavior_Linux.cpp:1:
Linux/win_list_manager.h:7: utilities/linux/window_manager/WMController/WMController.h: No such file or directory
In file included from Linux/MouseBehavior_Linux.h:11,
from Linux/MouseBehavior_Linux.cpp:1:
Linux/OrbiterLinux.h:11: utilities/linux/wrapper/wrapper_x11.h: No such file or directory
done
Computing dependencies for Linux/OSDScreenHandler.cppIn file included from Linux/OrbiterLinux.h:10,
from Linux/OSDScreenHandler.cpp:12:
Linux/win_list_manager.h:7: utilities/linux/window_manager/WMController/WMContro
ller.h: No such file or directory
In file included from Linux/OSDScreenHandler.cpp:12:
Linux/OrbiterLinux.h:11: utilities/linux/wrapper/wrapper_x11.h: No such file or directory
done
Computing dependencies for SDL/StartOrbiterSDL.cppIn file included from SDL/../Linux/OrbiterLinux.h:10,
from SDL/StartOrbiterSDL.h:5,
from SDL/StartOrbiterSDL.cpp:18:
SDL/../Linux/win_list_manager.h:7: utilities/linux/window_manager/WMController/WMController.h: No such file or directory
In file included from SDL/StartOrbiterSDL.h:5,
from SDL/StartOrbiterSDL.cpp:18:
SDL/../Linux/OrbiterLinux.h:11: utilities/linux/wrapper/wrapper_x11.h: No such file or directory
done
Computing dependencies for SDL/SDLGraphic.cppSDL/SDLGraphic.cpp:4: SDL_rotozoom.h: No such file or directory
done
Computing dependencies for SDL/SDLRendererOCGHelper.cpp done
Computing dependencies for SDL/OrbiterRenderer_SDL.cppSDL/OrbiterRenderer_SDL.cpp:35: Splitter/TextWrapper.h: No such file or directory
SDL/OrbiterRenderer_SDL.cpp:43: SDL_rotozoom.h: No such file or directory
SDL/OrbiterRenderer_SDL.cpp:56: utilities/linux/transparency/transparency.h: No such file or directory
SDL/OrbiterRenderer_SDL.cpp:57: utilities/linux/wrapper/wrapper_x11.h: No such file or directory
done
The next block of errors is:
Computing dependencies for GraphicBuilder.cppGraphicBuilder.cpp:10: OrbiterGen/Renderer.h: No such file or directory
done
Computing dependencies for RendererMNG.cpp done
Computing dependencies for Linux/XRecordExtensionHandler.cpp done
Computing dependencies for Linux/OrbiterLinux.cppIn file included from Linux/OrbiterLinux.h:10,
from Linux/OrbiterLinux.cpp:33:
Linux/win_list_manager.h:7: utilities/linux/window_manager/WMController/WMController.h: No such file or directory
In file included from Linux/OrbiterLinux.cpp:33:
Linux/OrbiterLinux.h:11: utilities/linux/wrapper/wrapper_x11.h: No such file or directory
done
Looks like I am missing
a utilities/linux/ directory,
OrbiterGen directory ,
Splitter/TextWrapper.h,
CreateDevice/UserUtils.h
SDL_rotozoom.h
I am assuming these are provided by some PlutoHome packages that I am missing?
Again I appreciate your help on this. Once I get this running I'll put something up on the wiki ;)
Rob
Hi,
I guess you are using latest code from our svn and you didn't update all trunk/src folder. Here's the url to svn: http://svn.plutohome.com/pluto/trunk/src/ . You'll have to update src/utilities folder to get wrapper_x11.h, WMController.h and transparency.h. I would recommend you to do a svn update to all trunk/src, to get the latest sources.
Best regards,
Chris M.
Ok chris.m,
I downloaded a couple of more packages from svn and now I think all of the dependencies are fixed. Here are the errors I am getting now:
on a "make" for Orbiter I get:
Computing dependencies for ../utilities/linux/wrapper/wrapper_x11.cppIn file included from ../utilities/linux/wrapper/../../defines/define_all.h:18,
from ../utilities/linux/wrapper/wrapper_x11.cpp:16:
../utilities/linux/wrapper/../../defines/define_cond.h:39: badly punctuated parameter list in `#define'
../utilities/linux/wrapper/../../defines/define_cond.h:50: badly punctuated parameter list in `#define'
../utilities/linux/wrapper/../../defines/define_cond.h:69: warning: invalid character in macro parameter name
../utilities/linux/wrapper/../../defines/define_cond.h:69: badly punctuated parameter list in `#define'
In file included from ../utilities/linux/wrapper/../../defines/define_all.h:19,
from ../utilities/linux/wrapper/wrapper_x11.cpp:16:
../utilities/linux/wrapper/../../defines/define_logger.h:35: badly punctuated parameter list in `#define'
../utilities/linux/wrapper/../../defines/define_logger.h:36: badly punctuated parameter list in `#define'
../utilities/linux/wrapper/../../defines/define_logger.h:37: badly punctuated parameter list in `#define'
../utilities/linux/window_manager/WMController/../../../defines/define_logger.h:37: badly punctuated parameter list in `#define'
../utilities/linux/window_manager/WMController/../../../defines/define_logger.h:38: badly punctuated parameter list in `#define'
done
Computing dependencies for TaskManager.cpp done
Computing dependencies for Task.cpp done
Computing dependencies for ../Gen_Devices/OrbiterBase.cpp done
Computing dependencies for Orbiter.cpp done
Computing dependencies for Main.cpp done
type 'make bin', 'make so' or 'make all'
and then a "make all" gives me this:
root@zaurus:~/PlutoHome/Orbiter# make all
g++ -c -I.. -I../DCE -I/usr/include/mysql -D_DEVEL_DEFINES -I/usr/include/SDL -DORBITER -DCACHE_IMAGES -DENABLE_MOUSE_BEHAVIOR -I../Splitter -I../OrbiterGen -I/usr/X11R6/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DUSE_WX_LIB=0 -Wall -fPIC -ggdb3 -g -O0 -DUSE_WX_LIB=0 Main.cpp -o Main.o
In file included from /usr/include/glib-2.0/glib.h:52,
from ../utilities/linux/window_manager/WMController/../wmctrl/wmctrl.h:50,
from ../utilities/linux/window_manager/WMController/WMController.h:14,
from SDL/../Linux/win_list_manager.h:7,
from SDL/../Linux/OrbiterLinux.h:10,
from SDL/StartOrbiterSDL.h:5,
from Main.cpp:21:
/usr/include/glib-2.0/glib/gmessages.h:109: warning: `visibility' attribute directive ignored
In file included from SDL/../Linux/../SDL/OrbiterRenderer_SDL.h:10,
from SDL/../Linux/OrbiterRenderer_Linux.h:8,
from SDL/StartOrbiterSDL.h:6,
from Main.cpp:21:
SDL/../Linux/../SDL/../OrbiterRenderer.h:41: syntax error before `;'
make: *** [Main.o] Error 1
I'm not sure what the syntax should be for this. Any help?
Thanks
Rob
This one is easy to managed. Just comment #include "define_cond.h" from src/utilities/defines/define_all.h.
Btw, "make bin" should be used to compile Orbiter.
chris.m,
Again I really appreciate your help on this :)
I commented out comment out define_cond.h in define_all.h and "make" still throws
Computing dependencies for ../utilities/linux/wrapper/wrapper_x11.cppIn file included from ../utilities/linux/wrapper/../../defines/define_all.h:19,
from ../utilities/linux/wrapper/wrapper_x11.cpp:16:
../utilities/linux/wrapper/../../defines/define_logger.h:35: badly punctuated parameter list in `#define'
../utilities/linux/wrapper/../../defines/define_logger.h:36: badly punctuated parameter list in `#define'
../utilities/linux/wrapper/../../defines/define_logger.h:37: badly punctuated parameter list in `#define'
../utilities/linux/wrapper/../../defines/define_logger.h:38: badly punctuated parameter list in `#define'
In file included from ../utilities/linux/wrapper/../../defines/define_all.h:20,
from ../utilities/linux/wrapper/wrapper_x11.cpp:16:
../utilities/linux/wrapper/../../defines/define_other.h:26: warning: invalid character in macro parameter name
../utilities/linux/wrapper/../../defines/define_other.h:26: badly punctuated parameter list in `#define'
../utilities/linux/wrapper/wrapper_x11.cpp:73: warning: invalid character in macro parameter name
../utilities/linux/wrapper/wrapper_x11.cpp:73: badly punctuated parameter list in `#define'
done
Computing dependencies for ../utilities/linux/window_manager/wmctrl/wmctrl.cpp../utilities/linux/window_manager/wmctrl/wmctrl.cpp:168: warning: invalid character in macro parameter name
../utilities/linux/window_manager/wmctrl/wmctrl.cpp:168: badly punctuated parameter list in `#define'
done
Computing dependencies for ../utilities/linux/window_manager/WMController/WMController.cppIn file included from ../utilities/linux/window_manager/WMController/WMController.cpp:10:
../utilities/linux/window_manager/WMController/../../../defines/define_logger.h:35: badly punctuated parameter list in `#define'
../utilities/linux/window_manager/WMController/../../../defines/define_logger.h:36: badly punctuated parameter list in `#define'
../utilities/linux/window_manager/WMController/../../../defines/define_logger.h:37: badly punctuated parameter list in `#define'
../utilities/linux/window_manager/WMController/../../../defines/define_logger.h:38: badly punctuated parameter list in `#define'
ndone
And "make bin" throws this:
ot@zaurus:~/PlutoHome/Orbiter# make bin
g++ -c -I.. -I../DCE -I/usr/include/mysql -D_DEVEL_DEFINES -I/usr/include/SDL -DORBITER -DCACHE_IMAGES -DENABLE_MOUSE_BEHAVIOR -I../Splitter -I../OrbiterGen -I/usr/X11R6/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DUSE_WX_LIB=0 -Wall -fPIC -ggdb3 -g -O0 -DUSE_WX_LIB=0 Main.cpp -o Main.o
In file included from /usr/include/glib-2.0/glib.h:52,
from ../utilities/linux/window_manager/WMController/../wmctrl/wmctrl.h:50,
from ../utilities/linux/window_manager/WMController/WMController.h:14,
from SDL/../Linux/win_list_manager.h:7,
from SDL/../Linux/OrbiterLinux.h:10,
from SDL/StartOrbiterSDL.h:5,
from Main.cpp:21:
/usr/include/glib-2.0/glib/gmessages.h:109: warning: `visibility' attribute directive ignored
In file included from SDL/../Linux/../SDL/OrbiterRenderer_SDL.h:10,
from SDL/../Linux/OrbiterRenderer_Linux.h:8,
from SDL/StartOrbiterSDL.h:6,
from Main.cpp:21:
SDL/../Linux/../SDL/../OrbiterRenderer.h:41: syntax error before `;'
make: *** [Main.o] Error 1
Can I comment out define_logger.h and define_other.h? or will that screw things up?
Rob
Hi,
You can comment the lines from define_logger.h and any other line from Orbiter which uses these macro definitions.
chris.m,
Sorry it has taken so long to get back to this/ I was in Japan the last couple of weeks and couldn`t get to working on this. I've gotten a bit farther along though.
I had to comment out
.
//E_DEBUG_CODE
//#include "define_all.h"
//#else
//#include "../../defines/define_all.h"
//#endif // USE_DEBUG_CODE
in utilities/linux/wrapper/wrapper_x11.cpp
make now goes without errors or warnings.
Now when I do a "make bin" however it still throws:
root@zaurus:~/PlutoHome/Orbiter# make bin
g++ -c -I.. -I../DCE -I/usr/include/mysql -D_DEVEL_DEFINES -I/usr/include/SDL -DORBITER -DCACHE_IMAGES -DENABLE_MOUSE_BEHAVIOR -I../Splitter -I../OrbiterGen -I/usr/X11R6/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DUSE_WX_LIB=0 -Wall -fPIC -ggdb3 -g -O0 -DUSE_WX_LIB=0 Main.cpp -o Main.o
In file included from /usr/include/glib-2.0/glib.h:52,
from ../utilities/linux/window_manager/WMController/../wmctrl/wmctrl.h:50,
from ../utilities/linux/window_manager/WMController/WMController.h:14,
from SDL/../Linux/win_list_manager.h:7,
from SDL/../Linux/OrbiterLinux.h:10,
from SDL/StartOrbiterSDL.h:5,
from Main.cpp:21:
/usr/include/glib-2.0/glib/gmessages.h:109: warning: `visibility' attribute directive ignored
In file included from SDL/../Linux/../SDL/OrbiterRenderer_SDL.h:10,
from SDL/../Linux/OrbiterRenderer_Linux.h:8,
from SDL/StartOrbiterSDL.h:6,
from Main.cpp:21:
SDL/../Linux/../SDL/../OrbiterRenderer.h:41: syntax error before `;'
make: *** [Main.o] Error 1
Here is the code around line 109 in /usr/include/glib-2.0/glib/gmessages.h
/* internal */
void _g_log_fallback_handler (const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *message,
gpointer unused_data) G_GNUC_INTERNAL;
/* Internal functions, used to implement the following macros */
void g_return_if_fail_warning (const char *log_domain,
const char *pretty_function,
const char *expression);
void g_assert_warning (const char *log_domain,
const char *file,
const int line,
const char *pretty_function,
const char *expression) G_GNUC_NORETURN;
and from SDL/../Linux/../SDL/../OrbiterRenderer.h:41:
OrbiterRenderer(Orbiter *pOrbiter);
void ConfigureDefaultTextStyle();
virtual void UpdateScreen();
auto_ptr<TextStyle> m_spTextStyle;
pluto_pthread_mutex_t m_NeedRedrawVarMutex; //this will protect needredr
aw vectors
public:
Orbiter *m_pOrbiter;
pluto_pthread_mutex_t m_bgImageReqMutex;
list<PlutoGraphic **> m_listbgImageGraphic;
list<string> m_listbgImageFilename;
Any ideas?
Hi,
You can ignore the first error message, it's just a warning. For OrbiterRenderer.h:41, the problem seems to be std::auto_ptr. Please try one of these solutions:
1) include <memory> header from STL
2) if 1) doesn't work, you'll have to remove auto_ptr and use usual pointers like this: TextStyle *m_pTextStyle.
Best regards,
Chris M.
chris.m,
Thanks for the reply. I now understand the glib warning, I apologize but I am not a developer and don't quite understand how to do the "include <memory> header from STL ". What is the syntax and where does it go? I'm assuming it goes in OrbiterRenderer.h? at the top?
Again, Thanks for spending so much time helping me!
Rob
Right, just add at the top of OrbiterRenderer.h, near the other includes, the line:
#include <memory>
It looks like its working but, the Pocketworkstation keeps crashing because of low memory. I'm trying a couple of things to see if they work. I'll let you know if I can get it compiled.
Thanks!
Rob
Looks like the Orbiter compile is too memory intensive to do natively on pocketworkstation. I tried a number of things but couldn't get it to compile all the way without crashing. Looks like I will have to try a cross compile...