[ell-i-developers] Re: Embedding python in emulator

  • From: Pekka Nikander <pekka.nikander@xxxxxx>
  • To: ell-i-developers@xxxxxxxxxxxxx
  • Date: Tue, 14 Oct 2014 20:58:16 +0300

I don't think cross-compiling python for ARM is the right way.  You will not be 
able to run the result anywhere.

--Pekka

On 2014–10–14, at 20:27 , Asif Sardar <engr.asif.sardar@xxxxxxxxxxxxxx> wrote:

> By native I meant my own laptop e.g. using gcc-linux to compile python. I 
> want to use python interpretor to be called from emulator code to call some 
> python functions (This will help later on for multi-purposes e.g. we can call 
> python from C/C++ independently). Currently, the callbacks I have implemented 
> have to pass-on information to python by actually calling the emulator from 
> python itself (2-way calling). If I am able to embed python in emulator, it 
> will asynchronously or independently call python whenever needed from C/C++ 
> code. Actually, the test libraries are written in python language in Robot 
> Framework that is why I am interested to do these kind of functionality to 
> both C/C++ and python.
> 
> I will try the steps in 
> https://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html#python to 
> cross-compile the python for ARM itself. I will share the findings here!
> 
> On Tue, Oct 14, 2014 at 8:12 PM, Jose Granados Vergara <jose.granados@xxxxxx> 
> wrote:
> Isn't the emulator native? why do you need to bind Python to the ARM binaries?
> 
> -Jose
> De: Asif Sardar [engr.asif.sardar@xxxxxxxxxxxxxx]
> Enviado: martes, 14 de octubre de 2014 08:04 p.m.
> Para: Jose Granados Vergara
> CC: ell-i-developers@xxxxxxxxxxxxx; Lari Lehtomäki
> Asunto: Re: Embedding python in emulator
> 
> Thanks Jose,
> 
> On native platform, its working for me as well. I think I have to re-compile 
> or cross-compile 32-bit python using ARM tools e.g. using something like 
> CXX=arm-none-linux-gnueabi-g++ and then rebuild robot framework.
> 
> I have to compile the emulator files using arm-tool chain and I am including 
> the 32-bit python in it built with native gcc toolchain.
> 
> If anyone else has some suggestions that I will really appreciate!
> 
> On Tue, Oct 14, 2014 at 7:58 PM, Jose Granados Vergara <jose.granados@xxxxxx> 
> wrote:
> This worked for me:
> 
> something.c:
> 
> #include "Python.h"
> 
> int main()
> {
>     Py_Initialize();
>     return 0;
> }
> 
> ~$ g++ -I/usr/include/python2.7 something.c -o something -lpython2.7
> 
> 
> -Jose
> De: Asif Sardar [engr.asif.sardar@xxxxxxxxxxxxxx]
> Enviado: martes, 14 de octubre de 2014 07:40 p.m.
> Para: ell-i-developers@xxxxxxxxxxxxx
> CC: Lari Lehtomäki; Jose Granados Vergara
> Asunto: Fwd: Embedding python in emulator
> 
> Hi,
> 
> Has anybody embedded python in C/C++ application. My platform is 64-bit and 
> python binaries I am using for Runtime/emulator is 32-bit. I have added 
> following flags in CFLAGS and LDFLAGS to compile and link the c/c++ files in 
> emulator with (#include </path/32-bit-python/include/python.h>)
> 
> CFLAGS += -I/opt/pym32/bin/include/python2.7 -fno-strict-aliasing -DNDEBUG -g 
> -fwrapv -O3 -Wall -Wstrict-prototypes
> LDFLAGS += -L/opt/pym32/lib/python2.7/config -lpthread -ldl -lutil -lm 
> -lpython2.7 -Xlinker -export-dynamic
> The files compiles but breaks when linking. Can anybody help with following 
> errors: 
> 
> -----------------------
> ./libsystem_stm32f4discovery.a(Register.o): In function 
> `Register::GPIO_Callback_Python(std::string, std::string, unsigned int, 
> std::string)':
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:41:
>  undefined reference to `Py_Initialize'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:43:
>  undefined reference to `PyRun_SimpleStringFlags'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:44:
>  undefined reference to `Py_Finalize'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:41:
>  undefined reference to `Py_Initialize'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:43:
>  undefined reference to `PyRun_SimpleStringFlags'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:44:
>  undefined reference to `Py_Finalize'
> ./libsystem_stm32f4discovery.a(system_stm32f4xx.o): In function 
> `__exchange_and_add':
> /usr/include/c++/4.8/ext/atomicity.h:49: undefined reference to 
> `__atomic_fetch_add_4'
> /usr/include/c++/4.8/ext/atomicity.h:49: undefined reference to 
> `__atomic_fetch_add_4'
> /usr/include/c++/4.8/ext/atomicity.h:49: undefined reference to 
> `__atomic_fetch_add_4'
> /usr/include/c++/4.8/ext/atomicity.h:49: undefined reference to 
> `__atomic_fetch_add_4'
> -----------------------
> 
> 
> ---------- Forwarded message ----------
> From: Asif Sardar <engr.asif.sardar@xxxxxxxxxxxxxx>
> Date: Mon, Oct 13, 2014 at 6:17 PM
> Subject: Embedding python in emulator
> To: Pekka Nikander <pekka.nikander@xxxxxx>
> 
> 
> Hi Pekka,
> 
> I am trying to include python.h in emulator/inc/register.h
> 
> I have to include cflags and ldflags in Makefile system of emulator e.g.
> 
> -I/opt/include/python2.7 -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall 
> -Wstrict-prototypes
> -L/opt/lib/python2.7/config -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker 
> -export-dynamic
> However, I am getting:
> ----------------------------------------------------
> g++ -m32 -march=i386 -m32 -march=i386 -Xlinker -export-dynamic -o 
> robot_library  robot_library.o stm32f4discovery.o libSPI.a "-L." 
> "-L/home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../variants/stm32f4discovery"
>  "-lsystem_stm32f4discovery" -lstdc++ 
> ./libsystem_stm32f4discovery.a(Register.o): In function 
> `Register::GPIO_Callback_Python(std::string, std::string, unsigned int, 
> std::string)':
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:41:
>  undefined reference to `Py_Initialize'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:43:
>  undefined reference to `PyRun_SimpleStringFlags'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:44:
>  undefined reference to `Py_Finalize'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:41:
>  undefined reference to `Py_Initialize'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:43:
>  undefined reference to `PyRun_SimpleStringFlags'
> /home/asif/Ell-i-Working-Directory/Ell-i-Software-Development/Runtime/stm32/tests/robot_library/../../emulator/src/Register.cpp:44:
>  undefined reference to `Py_Finalize'
> ./libsystem_stm32f4discovery.a(system_stm32f4xx.o): In function 
> `__exchange_and_add':
> /usr/include/c++/4.8/ext/atomicity.h:49: undefined reference to 
> `__atomic_fetch_add_4'
> /usr/include/c++/4.8/ext/atomicity.h:49: undefined reference to 
> `__atomic_fetch_add_4'
> /usr/include/c++/4.8/ext/atomicity.h:49: undefined reference to 
> `__atomic_fetch_add_4'
> /usr/include/c++/4.8/ext/atomicity.h:49: undefined reference to 
> `__atomic_fetch_add_4'
> collect2: error: ld returned 1 exit status
> make[1]: *** [robot_library] Error 1
> -----------------------------------
> 
> Can you help me in including these flags in the Makefile system and link the 
> python with it? It will help a lot, to call from c to python independently.
> 
> 
> 
> -- 
> With Best Regards,
> Asif Sardar.
> +358 43 8265795
> 
> 
> 
> -- 
> With Best Regards,
> Asif Sardar.
> +358 43 8265795
> 
> 
> 
> -- 
> With Best Regards,
> Asif Sardar.
> +358 43 8265795
> 
> 
> 
> -- 
> With Best Regards,
> Asif Sardar.
> +358 43 8265795

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Other related posts: