uber-archive / pyflame

🔥 Pyflame: A Ptracing Profiler For Python. This project is deprecated and not maintained.
Apache License 2.0
2.98k stars 239 forks source link

Building pyflame on aarch64 #139

Open indraneilmg opened 6 years ago

indraneilmg commented 6 years ago

Hello,

I am trying to build pyflame on aarch64 and I am running into the following errors -

indraneil@thunderx2-isc:~/pyflame$ make Making all in src make[1]: Entering directory '/home/indraneil/pyflame/src' make all-am make[2]: Entering directory '/home/indraneil/pyflame/src' /bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I/usr/include/python2.7 -I/usr/include/aarch64-linux-gnu/python2.7 -g -O2 -std=c++11 -Wall -MT libfrob26_la-frob26.lo -MD -MP -MF .deps/libfrob26_la-frob26.Tpo -c -o libfrob26_la-frob26.lo test -f 'frob26.cc' || echo './'frob26.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I/usr/include/python2.7 -I/usr/include/aarch64-linux-gnu/python2.7 -g -O2 -std=c++11 -Wall -MT libfrob26_la-frob26.lo -MD -MP -MF .deps/libfrob26_la-frob26.Tpo -c frob26.cc -fPIC -DPIC -o .libs/libfrob26_la-frob26.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I/usr/include/python2.7 -I/usr/include/aarch64-linux-gnu/python2.7 -g -O2 -std=c++11 -Wall -MT libfrob26_la-frob26.lo -MD -MP -MF .deps/libfrob26_la-frob26.Tpo -c frob26.cc -o libfrob26_la-frob26.o >/dev/null 2>&1 mv -f .deps/libfrob26_la-frob26.Tpo .deps/libfrob26_la-frob26.Plo /bin/sh ../libtool --tag=CXX --mode=link g++ -I/usr/include/python2.7 -I/usr/include/aarch64-linux-gnu/python2.7 -g -O2 -std=c++11 -Wall -o libfrob26.la libfrob26_la-frob26.lo libtool: link: ar cru .libs/libfrob26.a .libs/libfrob26_la-frob26.o ar: u' modifier ignored sinceD' is the default (see U') libtool: link: ranlib .libs/libfrob26.a libtool: link: ( cd ".libs" && rm -f "libfrob26.la" && ln -s "../libfrob26.la" "libfrob26.la" ) /bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I/usr/include/python3.5m -I/usr/include/aarch64-linux-gnu/python3.5m -g -O2 -std=c++11 -Wall -MT libfrob34_la-frob34.lo -MD -MP -MF .deps/libfrob34_la-frob34.Tpo -c -o libfrob34_la-frob34.lotest -f 'frob34.cc' || echo './'frob34.cc libtool: compile: g++ -DHAVE_CONFIG_H -I. -I/usr/include/python3.5m -I/usr/include/aarch64-linux-gnu/python3.5m -g -O2 -std=c++11 -Wall -MT libfrob34_la-frob34.lo -MD -MP -MF .deps/libfrob34_la-frob34.Tpo -c frob34.cc -fPIC -DPIC -o .libs/libfrob34_la-frob34.o libtool: compile: g++ -DHAVE_CONFIG_H -I. -I/usr/include/python3.5m -I/usr/include/aarch64-linux-gnu/python3.5m -g -O2 -std=c++11 -Wall -MT libfrob34_la-frob34.lo -MD -MP -MF .deps/libfrob34_la-frob34.Tpo -c frob34.cc -o libfrob34_la-frob34.o >/dev/null 2>&1 mv -f .deps/libfrob34_la-frob34.Tpo .deps/libfrob34_la-frob34.Plo /bin/sh ../libtool --tag=CXX --mode=link g++ -I/usr/include/python3.5m -I/usr/include/aarch64-linux-gnu/python3.5m -g -O2 -std=c++11 -Wall -o libfrob34.la libfrob34_la-frob34.lo libtool: link: ar cru .libs/libfrob34.a .libs/libfrob34_la-frob34.o ar:u' modifier ignored since D' is the default (seeU') libtool: link: ranlib .libs/libfrob34.a libtool: link: ( cd ".libs" && rm -f "libfrob34.la" && ln -s "../libfrob34.la" "libfrob34.la" ) depbase=echo aslr.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -Wall -MT aslr.o -MD -MP -MF $depbase.Tpo -c -o aslr.o aslr.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo frame.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -Wall -MT frame.o -MD -MP -MF $depbase.Tpo -c -o frame.o frame.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo thread.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -Wall -MT thread.o -MD -MP -MF $depbase.Tpo -c -o thread.o thread.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo namespace.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -Wall -MT namespace.o -MD -MP -MF $depbase.Tpo -c -o namespace.o namespace.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo posix.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -Wall -MT posix.o -MD -MP -MF $depbase.Tpo -c -o posix.o posix.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo prober.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -Wall -MT prober.o -MD -MP -MF $depbase.Tpo -c -o prober.o prober.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo ptrace.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -Wall -MT ptrace.o -MD -MP -MF $depbase.Tpo -c -o ptrace.o ptrace.cc &&\ mv -f $depbase.Tpo $depbase.Po ptrace.cc: In function 'user_regs_struct pyflame::PtraceGetRegs(pid_t)': ptrace.cc:127:14: error: 'PTRACE_GETREGS' was not declared in this scope if (ptrace(PTRACE_GETREGS, pid, 0, &regs)) { ^ ptrace.cc: In function 'void pyflame::PtraceSetRegs(pid_t, user_regs_struct)': ptrace.cc:136:14: error: 'PTRACE_SETREGS' was not declared in this scope if (ptrace(PTRACE_SETREGS, pid, 0, &regs)) { ^ Makefile:510: recipe for target 'ptrace.o' failed make[2]: [ptrace.o] Error 1 make[2]: Leaving directory '/home/indraneil/pyflame/src' Makefile:367: recipe for target 'all' failed make[1]: [all] Error 2 make[1]: Leaving directory '/home/indraneil/pyflame/src' Makefile:473: recipe for target 'all-recursive' failed make: *** [all-recursive] Error 1

Any suggestions/recommendations?

Thanks, Indraneil

eklitzke commented 6 years ago

Can you look at ptrace.h on your system and see what it includes? What version of glibc are you using?

eleciawhite commented 5 years ago

In my ARM system (TX2), I have three ptrace.h files in /usr/include

None of them have PTRACE_GETREGS.

This ptrace.h looks like my aarch64-linux-gnu/sys/ptrace.h which is likely the correct one to use.

Any suggestions for a work around?

imneonizer commented 5 years ago

i am also trying to install on agx-xavier, unable to build pyflame so far, see my error here #179