Turris 1.0 PPC Toolchain on LXC

Po dlouhém boji s různými chybami se mi konečně podařilo přeložit toolchain pro překlad programů ze zdrojových kódů přímo na Turrisu 1.0 v LXC debian kontejneru, takže není nutné překládat na PC. Pořád jde o CROSS kompilaci ale výsledný kód je pak spustitelný přímo pod Turris OS mimo LXC kontejner.

Pro zájemce ke stažení (2GB tar.gz) zde :

https://webshare.cz/file/4FU2481x01/turris-lxc-ppc-keychain-201712-tar-gz

Použití :
make CROSS=powerpc-openwrt-linux- CROSS_DIR=/root/turris/openwrt/staging_dir/toolchain-powerpc_8540_gcc-4.8-linaro_uClibc-0.9.33.2/bin/ STAGING_DIR=/root/turris/openwrt/staging_dir/

1 Like

Teď jsem to z práce zkoušel, asi budu potřebovat vaši pomoc:

Can't exec "make": No such file or directory at ./scripts/feeds line 21.
Use of uninitialized value in split at ./scripts/feeds line 21.
Use of uninitialized value $mkver[0] in pattern match (m//) at ./scripts/feeds line 23.
Use of uninitialized value $mkver[1] in pattern match (m//) at ./scripts/feeds line 24.
Use of uninitialized value $mkver[2] in split at ./scripts/feeds line 26.
Use of uninitialized value $mkv1 in numeric ge (>=) at ./scripts/feeds line 27.
Use of uninitialized value $mkv1 in numeric eq (==) at ./scripts/feeds line 27.
Unsupported version of make found: make

EDIT: jsem blbej, už to snad jede… omluva…

S tímhle si už asi ale neporadím…

gcc -DHAVE_CONFIG_H -I. -I..   -I/root/turris/openwrt/staging_dir/host/include -I/root/turris/openwrt/staging_dir/host/usr/include  -O2 -I/root/turris/openwrt/staging_dir/host/include -I/root/turris/openwrt/staging_dir/host/usr/include -MT argmatch.o -MD -MP -MF .deps/argmatch.Tpo -c -o argmatch.o argmatch.c
In file included from argmatch.h:25:0,
                 from argmatch.c:25:
./stddef.h:93:3: error: conflicting types for 'max_align_t'
 } max_align_t;
   ^~~~~~~~~~~
In file included from ./stddef.h:55:0,
                 from argmatch.h:25,
                 from argmatch.c:25:
/usr/lib/gcc/powerpc-linux-gnuspe/7/include/stddef.h:437:3: note: previous declaration of 'max_align_t' was here
 } max_align_t;
   ^~~~~~~~~~~
Makefile:1394: recipe for target 'argmatch.o' failed
make[7]: *** [argmatch.o] Error 1
make[7]: Leaving directory '/root/turris/openwrt/build_dir/host/patch-2.7.5/lib'
Makefile:1216: recipe for target 'all' failed
make[6]: *** [all] Error 2
make[6]: Leaving directory '/root/turris/openwrt/build_dir/host/patch-2.7.5/lib'
Makefile:1247: recipe for target 'all-recursive' failed
make[5]: *** [all-recursive] Error 1
make[5]: Leaving directory '/root/turris/openwrt/build_dir/host/patch-2.7.5'
Makefile:1146: recipe for target 'all' failed
make[4]: *** [all] Error 2
make[4]: Leaving directory '/root/turris/openwrt/build_dir/host/patch-2.7.5'
Makefile:21: recipe for target '/root/turris/openwrt/build_dir/host/patch-2.7.5/.built' failed
make[3]: *** [/root/turris/openwrt/build_dir/host/patch-2.7.5/.built] Error 2
make[3]: Leaving directory '/root/turris/openwrt/tools/patch'
tools/Makefile:124: recipe for target 'tools/patch/compile' failed
make[2]: *** [tools/patch/compile] Error 2
make[2]: Leaving directory '/root/turris/openwrt'
tools/Makefile:123: recipe for target '/root/turris/openwrt/staging_dir//stamp/.tools_install_yynyyyynynynyyyyyyyyynyyyyyyyyyynyyyyynnyyynnyynyynyyy' failed
make[1]: *** [/root/turris/openwrt/staging_dir//stamp/.tools_install_yynyyyynynynyyyyyyyyynyyyyyyyyyynyyyyynnyyynnyynyynyyy] Error 2
make[1]: Leaving directory '/root/turris/openwrt'
/root/turris/openwrt/include/toplevel.mk:181: recipe for target 'world' failed
make: *** [world] Error 2

S tím asi neporadím. Máte v LXC rozchozené prostředí pro nativní překlad z C ? Je vhodné nainstalovat tyto balíčky pro debian : gcc, g++, make, automake, svn, git, m4, ncurses devel, openssl devel, zlib devels,zlib1g, zlib1g-devel, libudev, gcc, binutils, bzip2, flex, python, perl, make, find, grep, diff, unzip, gawk, getopt, subversion, libz-dev and libc headers dialog. Podle té chyby to vypadá že si gcc sahá ještě někam jinam pro include soubory a pak je tam duplicitní deklarace. Také je po stažení zdrojáků dobré udělat make config nebo configure s podstrčenými adresáři na toolchain ale to může být u každého programu ve zdrojovém kódu jiné a někde to potřeba ani není.