cross compile php???

david
Hi to every body i have a doubt:

i have install a webserver on my mini2440 and i need to it cans run php. So
i configure it.

but after that appearsme this mistake:

could not find interpreter in 'usr/.../../'

so do i have to make a cross compile of this interpreter??

if it does right can any body giveme some ideas?? thanks!!

david
hi i didnt found info about this compile so i decided to make it by myself,
but im having some troubles.

here is the steps i have been done

dowload php and inside this folder i put this instrution:

./configure --host=arm-linux --prefix=/home/cherokee/etc
--exec-prefix=/home/cherokee/etc CFLAGS="-march=armv4t -mtune=arm920t -Os
-lpthread -lrt"

but appears me this mistake:

configure: error: xml2-config not found. Please check your libxml2
installation.

i downloaded this file and put it on the folder Php5, after this i repeat
my instrution, but i happened the same problem..



any ideas??

im going to keep trying

thanks

david
HI again i found this link:

http://hi.baidu.com/sunxuxi/blog/item/204a33ecfec436d72f2e210a.html

There i found i possible solution, there they have the same problem too

Then, there's this error during configure:

Configuring extensions
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2
installation.

this was his solution:


So I downloaded libxml2 source code from:
http://ftp.debian.org/debian/pool/main/libx/libxml2/libxml2_2.6.16.orig....

Configure and compile just as usual: (Take note that --prefix needs an
absolute path.)

$ export CC=/usr/arm/bin/arm-linux-gcc
$ export CXX=/usr/arm/bin/arm-linux-cpp
$ export CPP=/usr/arm/bin/arm-linux-cpp
$ ./configure --host=i386-linux-gnu --target=arm --prefix=$PWD/install-a

$ make

i  change some lines:
export CROSS_COMPILE=arm-none-linux-gnueabi-
export CC=${CROSS_COMPILE}"gcc"
export CXX=${CROSS_COMPILE}"g++" 
./configure --host=arm-linux --target=arm --prefix=$PWD/install-arm



but when i execute make i have this problem:

elfgcchack.h:7730: error: 'xmlXPtrNewRangePoints' aliased to undefined
symbol 'xmlXPtrNewRangePoints__internal_alias'

any ideas?? i think im having some progress in this (little but i keep
trying)

i hope this can be useful for some else, of course when i finish ejjeje,
for now help!!!

david
i solve the problem


the solution was change libxml2-2.6.17 for:  libxml2-2.6.19

now i begin with php

david
excues me but i didnt note this mistake at the end when i executed make::

,/home/felipe/Escritorio/libxml2-2.6.19/install-arm/lib
./.libs/libxml2.so: undefined reference to `gzopen'
./.libs/libxml2.so: undefined reference to `gzclose'
./.libs/libxml2.so: undefined reference to `deflate'
./.libs/libxml2.so: undefined reference to `gzrewind'
./.libs/libxml2.so: undefined reference to `gzwrite'
./.libs/libxml2.so: undefined reference to `crc32'
./.libs/libxml2.so: undefined reference to `deflateEnd'
./.libs/libxml2.so: undefined reference to `gzdopen'
./.libs/libxml2.so: undefined reference to `deflateInit2_'
./.libs/libxml2.so: undefined reference to `gzread'
collect2: ld returned 1 exit status
make[2]: *** [xmllint] Error 1
make[2]: se sale del directorio `/home/felipe/Escritorio/libxml2-2.6.19'
make[1]: *** [all-recursive] Error 1
make[1]: se sale del directorio `/home/felipe/Escritorio/libxml2-2.6.19'
make: *** [all] Error 2


can any body giveme some ideas i think that after this ill could put to run
php on mini!


thanks

david
doesnt anyone need this too?

help please!!!

david
hi made somes changes on my command lines:

export CROSS_COMPILE=arm-none-linux-gnueabi-
export CC=${CROSS_COMPILE}"gcc"
export CXX=${CROSS_COMPILE}"g++" 
./configure --host=arm-linux --target=arm --without-zlib
--prefix=/home/felipe/libxml


it doesnt throwsme mistakes but it doesnt create the folder libxml on
home/felipe


so.. was it a good compile? 


its a simple doubt but im comfuse help!!

david
hi at this moment this its like a monologue, what ever i hope someone could
giveme a hand at this part

im not sure if the problem could be use or not zlib because if i dont use
it, it doesnt create me any files or should i made a wrong compile last
time?? im not sure thats my first doubt


the second i include again zlib on my instrutions 
 i repeat this instrution:

export CROSS_COMPILE=arm-none-linux-gnueabi-
export CC=${CROSS_COMPILE}"gcc"
export CXX=${CROSS_COMPILE}"g++" 
./configure --host=arm-linux --target=arm --prefix=/opt/install-arm

and after that i checked the some information from the output and i note
this:

checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
appending configuration tag "F77" to libtool
Checking zlib
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for gzread in -lz... no
Checking headers
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for ANSI C header files... (cached) yes
checking fcntl.h usability... yes


if it can read zlib usability why am i still having that problem??

i also made a cross compile of zlib following this steps:

 Used version: zlib-1.1.4.tar.gz

After unpacked the sources change to the source directory:

# cd zlib-1.1.4

# CC=arm-linux-gcc \
./configure --prefix=/opt

# make

# make install prefix=/opt 

it mades me two folders but include and lib , i move that folder to a new
folder zlib inside opt folder

and tried this code:

export CROSS_COMPILE=arm-none-linux-gnueabi-
export CC=${CROSS_COMPILE}"gcc"
export CXX=${CROSS_COMPILE}"g++" 
./configure --host=arm-linux --target=arm --with-zlib-dir=/opt/zlib
--prefix=/opt/install-arm

make

but the output was the same problem:

./.libs/libxml2.so: undefined reference to `gzopen'
./.libs/libxml2.so: undefined reference to `gzclose'
./.libs/libxml2.so: undefined reference to `deflate'
./.libs/libxml2.so: undefined reference to `gzrewind'
./.libs/libxml2.so: undefined reference to `gzwrite'
./.libs/libxml2.so: undefined reference to `crc32'
./.libs/libxml2.so: undefined reference to `deflateEnd'
./.libs/libxml2.so: undefined reference to `gzdopen'
./.libs/libxml2.so: undefined reference to `deflateInit2_'
./.libs/libxml2.so: undefined reference to `gzread'
collect2: ld returned 1 exit status
make[2]: *** [xmllint] Error 1
make[2]: se sale del directorio `/home/felipe/Escritorio/libxml2-2.6.19'
make[1]: *** [all-recursive] Error 1
make[1]: se sale del directorio `/home/felipe/Escritorio/libxml2-2.6.19'
make: *** [all] Error 2

what could be the problem?? HELLLLP!

Andreas
PHP would be very nice ....

if you get managed to crosscompile it...
may you please share it?

unfornatullly i cannot help you

Yours Andreas

david
Andreas,

yeah i going to upload some where but, i need a hand!! this forum tells all
the steps i have done. so any one cans followme

david
i could solve the problem!!! the solution compile zlib with this:

http://www.ailis.de/~k/index.php?url=archives/19-ARM-cross-compiling-how...

and copy and paste the compiled flies:libz.a,libz.so, libz.so1 libz.o.1.1.4
folder to:

/usr/local/arm/4.3.2/arm-none-linux-gnuebi/libc/lib

the final configuration i used was this:

Code:

export CROSS_COMPILE=arm-none-linux-gnueabi-
export CC=${CROSS_COMPILE}"gcc"
export CXX=${CROSS_COMPILE}"g++" 
./configure --host=arm-linux --target=arm --prefix=/opt

how ever it didnt create me the compile files

why doesnt it create files?? isnt it suppose that it most be create the
files where i put on prefix command line? in my case on /opt folder???

Helpp im close

david
at least i could compile this library i forgot the final step:


make install 

jajajajajaj ;)

Now php!!

shuai.xue
I have question,which version of php do you use?

Nicolas
Where you able to get PHP running on the mini2440 ?
In a web server ?

Thanks.

david
yes it was on a web server

Daniel
Do you need the mini2440 just to be a webserver? Why don't you install
Debian or Emdebian on it and get rid of all the compile stuff?

aris setyawan
Hi david,

I think you need to use web server which have "small" memory usage so we
can save it for another process.

are you familiar with ANSI c?

If "yes", you can use g-wan -> http://gwan.com/ (easy to install, 200K),
libev -> http://software.schmorp.de/pkg/libev.html or libevent
http://monkey.org/~provos/libevent/

they have small foot print, and better performance (trhougput).

but if you still use PHP, use cherokee web server ->
http://www.cherokee-project.com/benchmarks.html

-aris

Nicolas
Im in the same boat David.
Trying appweb and php. However, having a hell of a time getting PHP to
compile for arm, no matter what settings, it still compiles for x86.

What web server are you using it with ?

Any chance youd put up the files somewhere ?
Specifically the php5lib.so

Praveen
Hi guys,

I got a problem.
I am trying to cross compile php for ARM. I could do it but its does'nt
generate ".so files".
Can anyone help how to get ".so" files.

Thanks,
Praveen.

deltaT
Hi guys,

your problem are the dependencies of each single solution you want to use.
I recommend you look into some BSPs that include both, support for the
architecture and has the packages you need.
For Mini2440 I'd recommend either the pengutronix BSP (www.ptxdist.org) or
OE (www.openembedded.org)
you can either create a complete image or only compile the packages you
need as .ipk/.opk and install it.
It takes less fumbling around and auto-builds the dependencies.

Nomad
http://tiebing.blogspot.com/2010/08/cross-compile-php-533-to-arm.html
it works!

Nomad
also i've used busybox hhtp server witch works quite fine with php-cgi

Juergen Beisert
Aris,

"you can use g-wan -> http://gwan.com/";: Is it open source, can I compile
it for ARM? I just found x86 binaries on their website.