python3 ошибка кросс-компиляции: отсутствует двоичный оператор перед токеном "(" #if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5) - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь выполнить кросс-компиляцию на python3 .6 с x86_64-p c - linux -gnu до i686-p c - linux -gnu. Я подготовил SDK с bin-utils, заголовками ядра, glib c & g cc.

После загрузки и распаковки python 3.6. Вот шаги, которые я выполнил, чтобы сделать кросс-компиляцию

$ export PATH=/home/ach/x-tools/i686-pc-linux-gnu/bin:$PATH

$ PLAT=i686-pc-linux-gnu-

$ CC=${PLAT}gcc \
  CXX=${PLAT}g++ \
  AR=${PLAT}ar \
  RANLIB=${PLAT}ranlib \
  ./configure \
      --build=x86_64-pc-linux-gnu \
      --host=x86_64-pc-linux-gnu \
      --target=i686-pc-linux-gnu \
      --prefix=$HOME/Downloads/cross-python/depsBuild/python \
      --disable-ipv6 \
      ac_cv_file__dev_ptmx=no \
      ac_cv_file__dev_ptc=no \
      ac_cv_have_long_long_format=yes \
      --enable-shared

$ CROSSBASE=/home/ach/x-tools/i686-pc-linux-gnu/i686-pc-linux-gnu/sysroot \
  CFLAGS="-I${CROSSBASE}/include -I{CROSSBASE}/usr/include" \
  LDFLAGS="-L${CROSSBASE}/lib -L{CROSSBASE}/usr/lib" \
  make \
      HOSTPYTHON=$HOME/Downloads/cross-python/depsBuild/pythonhost/python \
      BLDSHARED="${PLAT}gcc -shared" \
      CROSS_COMPILE=$PLAT \
      CROSS_COMPILE_TARGET=yes \
      HOSTARCH=x86_64-linux-gnu \
      BUILDARCH=x86_64-linux-gnu

ОШИБКА

CC='i686-pc-linux-gnu-gcc' LDSHARED='i686-pc-linux-gnu-gcc -shared' OPT='-DNDEBUG -g -fwrapv -O3 -Wall'     _TCLTK_INCLUDES='' _TCLTK_LIBS=''   _PYTHON_PROJECT_BASE=/home/ach/Downloads/cross-python/Python-3.6.9 _PYTHON_HOST_PLATFORM=linux-i686 PYTHONPATH=/home/ach/Downloads/cross-python/Python-3.6.9/build/lib.linux-i686-3.6:./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_m_linux_i386-linux-gnu python3.6 ./setup.py -q build
In file included from /home/ach/x-tools/i686-pc-linux-gnu/i686-pc-linux-gnu/sysroot/usr/include/features.h:378:0,
                 from /home/ach/x-tools/i686-pc-linux-gnu/i686-pc-linux-gnu/sysroot/usr/include/limits.h:25,
                 from /home/ach/x-tools/i686-pc-linux-gnu/lib/gcc/i686-pc-linux-gnu/7.4.0/include-fixed/limits.h:194,
                 from /home/ach/x-tools/i686-pc-linux-gnu/lib/gcc/i686-pc-linux-gnu/7.4.0/include-fixed/syslimits.h:7,
                 from /home/ach/x-tools/i686-pc-linux-gnu/lib/gcc/i686-pc-linux-gnu/7.4.0/include-fixed/limits.h:34,
                 from ./Include/Python.h:11,
                 from /home/ach/Downloads/cross-python/Python-3.6.9/Modules/_struct.c:8:
/usr/include/i386-linux-gnu/sys/cdefs.h:467:49: error: missing binary operator before token "("
 #if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5)
                                                 ^
In file included from ./Include/Python.h:25:0,
                 from /home/ach/Downloads/cross-python/Python-3.6.9/Modules/_struct.c:8:
/home/ach/x-tools/i686-pc-linux-gnu/i686-pc-linux-gnu/sysroot/usr/include/stdio.h:48:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'typedef'
 typedef struct _IO_FILE FILE;
 ^~~~~~~
/home/ach/x-tools/i686-pc-linux-gnu/i686-pc-linux-gnu/sysroot/usr/include/stdio.h:49:1: error: unknown type name '__END_NAMESPACE_STD'
 __END_NAMESPACE_STD

^ ~~~~~~~~~~~~~~~~~~~

Во время кросс-компиляции это относится ко всем заголовочным файлам внутри моей кросс-скомпилированной платформы. Но внезапно это относится к /usr/include/i386-linux-gnu/sys/cdefs.h, и с этого момента все ошибки запускаются.

Я потратил много времени на поиск этой информации, но, к сожалению, не так много информации, имеющейся в отношении python3 кросс-компиляция. Любая помощь очень ценится. Может дать больше информации, если это необходимо.

Спасибо

...