Prev: Can't change the value of self
Next: sinatra
From: Maxim Sokolovsky on 15 Jul 2010 09:56 Hi, I'm spent countless time in searching working ruby port on Windows Mobile. I'm not a fan of this OS, but already have device with it and still want to try programming in ruby on it. Google kicked me to: 1. Howto compile and binaries ruby 1.8.x with Microsoft Visual Embedded C++ ( http://uema2.s8.xrea.com/ruby-mswince/ ). This works fine, but first of all it has Windows Mobile restriction on relative paths (ex. requiring 'lib/some.rb" - fails) and in addition it is 1.8 - not 1.9. There is no chance to use it as full value port, especially with rubygems. 2. Success story of compiling ruby 1.8 with CeGCC cross compile toolchain ( http://cegcc.sourceforge.net/ ). Here is the topic of John Snowdon aka smed: http://www.ruby-forum.com/topic/143475 . He successfully compiled ruby 1.8 even with rubygems (!). But for my sorry I can't reproduce his success and his blog with binaries is down too ( http://www.target-earth.net/gadgets/code/rubyce.html ). In addition it is 1.8 branch and it will be more likely to use 1.9.x :-P So, i'm trying to compile ruby 1.9.1 p429 with CeGCC 0.59.1 under Ubuntu 10.04. First trouble that I get - is that confuigure script can't verify setpgrp() while cross-compiling. I solve it by adding "ac_cv_func_setpgrp_void=yes" to args. Next trouble was that configure script cannot detect pthread_kill function in any header, so it suggest not to use native threads, but in 1.9.x native threads - are mandatory. Some search kick me to mail list with howto compile pthreads-win32 ( http://sourceware.org/ml/pthreads-win32/ ) with mingw32ce (mingw32 part of cegcc). I reproduced his success and now i have .dll, .a and headers. First my question is - can I it ( library compiled with mingw32ce) in compiling with cegcc? I'm novice in cross compiling and it would be greate if someone can hint how do I use it in compilng: some extra environment variable, makefile edits or maybe i can add some args to configure script? I think i choose dirty incorrect way, trying to hack makefile and sources in order to bypass errors. I added "-I/path/to/pthreads" to optflags variable in Makefile. I'm compiling with this environment: ruby sources is in: /var/tmp/ruby-1.9.1-p429 pthreads-win32 sources, library file(.a) and its dll in: /var/tmp/pthreads-w32-2-8-0-release cegcc is in: /opt/cegcc mingw32ce is in: /opt/mingw32ce this is my PATH env variable: /opt/mingw32ce/bin:/opt/cegcc/bin:/opt/cegcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/android-sdk-linux_86/tools and this is line with which i'm compiling: CC=arm-cegcc-gcc CPP=arm-cegcc-cpp AR=arm-cegcc-ar AS=arm-cegcc-as OBJCOPY=arm-cegcc-objcopy OBJDUMP=arm-cegcc-objdump RANLIB=arm-cegcc-ranlib LIBS="-I/var/tmp/pthreads-w32-2-8-0-release -I/opt/cegcc/include -I/opt/cegcc/arm-cegcc/include" LDFLAGS="-L/var/tmp/pthreads-w32-2-8-0-release -L/opt/cegcc/lib -L/opt/cegcc/arm-cegcc/lib" ./configure --host=arm-wince --prefix=/WinCE/built --enable-shared ac_cv_func_setpgrp_void=yes --enable-pthread=pthread and this is my output: axe1(a)axe1-desktop:/var/tmp/ruby-1.9.1-p429$ make GNUmakefile:43: target `ruby.rc' given more than once in the same rule. include-dir . --include-dir . --include-dir ./win32 ruby.rc ruby.res.o make: include-dir: Command not found make: [ruby.res.o] Error 127 (ignored) arm-cegcc-gcc -O2 -I/var/tmp/pthreads-w32-2-8-0-release -g -Wall -Wno-parentheses -I. -I.ext/include/arm-wince -I./include -I. -DRUBY_EXPORT -o io.o -c io.c io.c: In function 'rb_io_close_read': io.c:3369: warning: implicit declaration of function 'rb_w32_is_socket' io.c: In function 'pipe_open': io.c:4643: warning: implicit declaration of function 'rb_w32_aspawn' io.c:4643: error: 'P_NOWAIT' undeclared (first use in this function) io.c:4643: error: (Each undeclared identifier is reported only once io.c:4643: error: for each function it appears in.) io.c:4644: warning: implicit declaration of function 'rb_w32_spawn' io.c: In function 'io_cntl': io.c:6709: warning: implicit declaration of function 'ioctl' io.c: In function 'maygvl_copy_stream_wait_read': io.c:7351: warning: implicit declaration of function 'select' make: *** [io.o] Error 1 can anybody kick me to right way on solving this? I couldn't understand why ruby uses some *w32* function when i'm compiling with posix compilant toolchain... P.S. Sorry for my bad english - my native language is russian. -- Posted via http://www.ruby-forum.com/.
From: Roger Pack on 15 Jul 2010 10:19 Maxim Sokolovsky wrote: > Hi, > I'm spent countless time in searching working ruby port on Windows > Mobile. I'm not a fan of this OS, but already have device with it and > still want to try programming in ruby on it. Google kicked me to: > > 1. Howto compile and binaries ruby 1.8.x with Microsoft Visual Embedded > C++ ( http://uema2.s8.xrea.com/ruby-mswince/ ). This works fine, but > first of all it has Windows Mobile restriction on relative paths (ex. > requiring 'lib/some.rb" - fails) and in addition it is 1.8 - not 1.9. > There is no chance to use it as full value port, especially with > rubygems. > > 2. Success story of compiling ruby 1.8 with CeGCC cross compile > toolchain ( http://cegcc.sourceforge.net/ ). Here is the topic of John > Snowdon aka smed: http://www.ruby-forum.com/topic/143475 . He > successfully compiled ruby 1.8 even with rubygems (!). But for my sorry > I can't reproduce his success and his blog with binaries is down too ( > http://www.target-earth.net/gadgets/code/rubyce.html ). In addition it > is 1.8 branch and it will be more likely to use 1.9.x :-P > > So, i'm trying to compile ruby 1.9.1 p429 with CeGCC 0.59.1 under > Ubuntu 10.04. First trouble that I get - is that confuigure script can't > verify setpgrp() while cross-compiling. I solve it by adding > "ac_cv_func_setpgrp_void=yes" to args. Next trouble was that configure > script cannot detect pthread_kill function in any header, so it suggest > not to use native threads, but in 1.9.x native threads - are mandatory. > Some search kick me to mail list with howto compile pthreads-win32 ( > http://sourceware.org/ml/pthreads-win32/ ) with mingw32ce (mingw32 part > of cegcc). I reproduced his success and now i have .dll, .a and headers. > First my question is - can I it ( library compiled with mingw32ce) in > compiling with cegcc? I'm novice in cross compiling and it would be > greate if someone can hint how do I use it in compilng: some extra > environment variable, makefile edits or maybe i can add some args to > configure script? I think i choose dirty incorrect way, trying to hack > makefile and sources in order to bypass errors. I added If it's a dll it "should" work. > io.c:3369: warning: implicit declaration of function 'rb_w32_is_socket' I think this means that somehow compilation doesn't realize you are on windows. The rubyinstaller list might be helpful, as well. http://rubyinstaller.org/ I think I remember wince being removed recently from 1.9 branch (no maintainer, little interest), so grabbing a build *before* that might work better. But I don't remember exactly. -- Posted via http://www.ruby-forum.com/.
From: Maxim Sokolovsky on 16 Jul 2010 04:14 Roger Pack wrote: > If it's a dll it "should" work. How do I add it in a right way? When I add it to LDFLAGS and LIBS env variables it doesn't apear in compiling... So it runs like: arm-cegcc-gcc -O2 -g -Wall -Wno-parentheses -I. -I.ext/include/arm-wince -I./include -I. -DRUBY_EXPORT -o io.o -c io.c I fix it dirty by adding "-I/path/to/pthreads" into Makefile in a line, where -O2 parameter added.. How this could be done in right manner? > I think this means that somehow compilation doesn't realize you are on > windows. I'm on Ubuntu linux if you mean my OS. And as far as i know configure script should think i compile it for linux, cause cegcc emulates POSIX API and is designed to cross-compile linux apps to windows mobile. So i couldn't understand why it tries some *w32* functions... > The rubyinstaller list might be helpful, as well. > http://rubyinstaller.org/ I'll post my message there if I wouldn't get answers here, but... they use MinGW32 environment to compile ruby for Win32.. This isn't near my goal I think, isn't it? > I think I remember wince being removed recently from 1.9 branch (no > maintainer, little interest), so grabbing a build *before* that might > work better. But I don't remember exactly. It's true. Sorry I forgot to say that I already tries to compile latest ruby 1.9.x branch without removed WinCE scripts (it's 1.9.0.5, http://github.com/ruby/ruby/tree/v1_9_0_5). First of all it seems that WinCE folder there is unchanged since 1.8.x branch and it doesn't compiles. In addition it uses Microsoft Embedded Visual C++ compiler to build. And at http://uema2.s8.xrea.com/ruby-mswince is 1.8.x branch compiled with official support. -- Posted via http://www.ruby-forum.com/.
From: Roger Pack on 16 Jul 2010 10:35 Maxim Sokolovsky wrote: > Roger Pack wrote: >> If it's a dll it "should" work. > > How do I add it in a right way? When I add it to LDFLAGS and LIBS env > variables it doesn't apear in compiling... So it runs like: > arm-cegcc-gcc -O2 -g -Wall -Wno-parentheses -I. > -I.ext/include/arm-wince -I./include -I. -DRUBY_EXPORT -o io.o -c io.c > I fix it dirty by adding "-I/path/to/pthreads" into Makefile in a line, > where -O2 parameter added.. How this could be done in right manner? is there an --enable-pthreads option? I know 1.9.2 used to try to use pthreads on windows but then we complained so it was disallowed... >> I think this means that somehow compilation doesn't realize you are on >> windows. > > I'm on Ubuntu linux if you mean my OS. And as far as i know configure > script should think i compile it for linux, cause cegcc emulates POSIX > API and is designed to cross-compile linux apps to windows mobile. So i > couldn't understand why it tries some *w32* functions... Something isn't detecting right, or it would never even try to build win32.c, I imagine. >> The rubyinstaller list might be helpful, as well. >> http://rubyinstaller.org/ > > I'll post my message there if I wouldn't get answers here, but... they > use MinGW32 environment to compile ruby for Win32.. This isn't near my > goal I think, isn't it? Yeah but they may have some expertise. Unfortunately I don't really :) -r -- Posted via http://www.ruby-forum.com/.
|
Pages: 1 Prev: Can't change the value of self Next: sinatra |