On Mon, Aug 30, 2010 at 6:37 AM, Moritz Rosenthal <[email protected]> wrote: > Hi! > > at #zeromq they said it might be of interest to some receivers of this > list, so I'm gonna tell my short story of try, error and success. > > How I built 0MQ for my embedded ARM: > > First I wanted to try it at my PC. So I used the python install tutorial > [1] and ran into "ImportError: libzmq.so.0: cannot open shared object > file: No such file or directory". No problem - could be solved as > described in [2]. This problem is known since a few months now for > Redhat, but occurs at Ubuntu, too ([3]). > > So I simply did this diff manually: >> diff -u a/setup.py b/setup.py >> --- a/setup.py >> +++ b/setup.py >> @@ -49,7 +49,8 @@ else: >> zmq = Extension( >> 'zmq._zmq', >> sources = [zmq_source], >> - libraries = [libzmq] >> + libraries = [libzmq], >> + runtime_library_dirs = ['/usr/local/lib'], >> )
While this does fix the issue, there are two better way of solving the issue that are outlined in the README: * Set LD_LIBRARY_PATH or * Use the --rpath flag when doing python setup.py build_ext This is detailed in the Linux section on this page: http://github.com/zeromq/pyzmq > Next step was to cross compile the zeromq C libraries for my ARM > architecture. As GNU autotools is used by zeromq that was quite easy: > >> ./configure --prefix=<target directory> --host=<arch> >> make >> make install > > After that I copied the files in <target directory> to the ARM device. > > Cross compiling the python part wasn't that easy. I edited setup.cfg and > the change I made to the setup.py to use the libraries from the <target > directory> we used before and ran > >> python setup.py -v build > > That gave me an idea, of what the script is doing in the background. > Apart from copying a lots of .py-files into the build directory there > were especially two gcc sessions of interest: > >> gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall >> -Wstrict-prototypes -fPIC >> -I/usr/local/include -I/usr/include/python2.6 >> -c zmq/_zmq.c -o build/temp.linux-i686-2.6/zmq/_zmq.o >> >> gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions >> build/temp.linux-i686-2.6/zmq/_zmq.o >> -L/home/moritz/GEU/git/GEU/usr/local/lib -Wl,-R/usr/local/lib -lzmq >> -o build/lib.linux-i686-2.6/zmq/_zmq.so > > Ok - I changed the -I-statements (the header includes used by gcc) and > the gcc command itself to my cross compiler gcc and viola! > > Just to put in some interesting stuff for google search: I first only > replaced /usr/local/include but not /usr/include/python2.6. That > compiled well, but I got an > >> undefined symbol: PyUnicodeUCS4_DecodeUTF8" > > when trying to import the new module at my arm. I found this posting > [4], where is described, that this error comes from using different > Python header files, when compiling and running a module. So I used the > original header files of my embedded platform for include. > > After That all I had to do was rename build/lib.linux-i686-2.6 to > build/lib.linux-arm-2.6 (I didn't really have to, but it seems a better > style, as all binaries inside there are for ARM) and copy it's content > to /usr/lib/python2.6 at my target device. > > Thank's for this great library! > > Best regards > Moritz > > [1] http://www.zeromq.org/bindings:python > [2] > http://blog.boxedice.com/2010/05/23/building-zeromq-and-pyzmq-on-red-hat/ > [3] http://mail.scipy.org/pipermail/ipython-dev/2010-March/005900.html > [4] http://lists.openmoko.org/pipermail/devel/2009-January/003948.html > -- > Moritz Rosenthal > Wizardry and magic affairs > ======================= > m2m Germany GmbH > Rudolf-Diesel-Str. 7 (Industriegebiet Nord) > D-61273 Wehrheim > Phone: +49-6081-58738-65 > E-Mail: [email protected] > Internet: www.m2mgermany.de > Fax: +49-6081-58738-69 > ======================= > Sitz der Gesellschaft: 61273 Wehrheim > Handelsregister: Bad Homburg HRB 10714 > Vertretungsberechtigte Geschäftsführer: > Michael Nickolai / Jörg Parnitzke > > Diese E-Mail enthält möglicherweise vertrauliche und/oder rechtlich > geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder > diese E-Mail irrtümlich erhalten haben, informieren Sie bitte > unverzüglich den Absender. > > Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist > nicht gestattet. > > This e-mail may contain confidential and/or privileged information. If > you are not the intended recipient (or have received this e-mail in > error) please notify the sender immediately and destroy this e-mail. > Anyunauthorized copying, disclosure or distribution of the material in > this e-mail is strictly forbidden. > _______________________________________________ > zeromq-dev mailing list > [email protected] > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > -- Brian E. Granger, Ph.D. Assistant Professor of Physics Cal Poly State University, San Luis Obispo [email protected] [email protected] _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
