Keine Ahnung ob es ne Toolchain fürs target gibt
Gibt es aber:
https://github.com/Freetz/freetz/blob/master/config/ui/toolchain.in#L495 - zumindest staune ich mal, daß Dir das nicht geläufig ist. Es gäbe auch eine (kurze) Hilfe/Anleitung dazu:
https://freetz.github.io/wiki/help/howtos/development/create_cross-compiler_toolchain.html - ich weiß aber gerade auch nicht, wie alt und wie aktuell die noch ist.
In dem Kontext kann es aber auch alles andere sein
Na ja ... da fehlt zwar tatsächlich viel "Kontext", aber ein "make", was am Ende im Verzeichnis "source/toolchain-mips_gcc-8.3.0_uClibc-1.0.15-nptl_kernel-4.9/gcc-8.3.0-target/build-x86_64-pc-linux-gnu/libcpp" herumturnt:
Code:
make[3]: Leaving directory '/home/freetz/workdir/git.7590-ng_7.20/source/toolchain-mips_gcc-8.3.0_uClibc-1.0.15-nptl_kernel-4.9/gcc-8.3.0-target/build-x86_64-pc-linux-gnu/libcpp'
bietet nun wenig Anlaß zu einer Vermutung, daß es irgendetwas mit einem ARM-System zu tun haben könnte. Wo sieht man in dem (zugegebermaßen eher spärlichen) Log-Ausschnitt etwas in dieser Richtung? "x86_64" kann ich noch sehen und "mips" auch noch - von "arm" aber keine Spur. Da soll (nach meinem Verständnis jedenfalls) ein GCC 8.3.0 für einen Build mit einer MIPS-Box als Ziel erstellt werden und das auf einem System, was x86_64-Architektur verwendet - also letztlich ein Cross-Compiler, der auf einem 64-Bit-Intel-System den Code für eine MIPS-Plattform erzeugen kann.
Wobei der ganze Teil, der überhaupt mit dem GCC 8 arbeitet, ja ohnehin von Dir stammt und nur unter Freetz-NG verfügbar ist:
Code:
$ diff -u freetz/config/ui/toolchain.in freetz-ng/config/ui/toolchain.in
--- freetz/config/ui/toolchain.in 2020-09-30 17:48:43.467866586 +0200
+++ freetz-ng/config/ui/toolchain.in 2020-09-26 12:20:32.831349051 +0200
@@ -8,18 +8,44 @@
Download Toolchain, build toolchain
config FREETZ_DOWNLOAD_TOOLCHAIN
- bool "Download and use precompiled toolchains"
+ bool "Use precompiled toolchains (x86 only)"
+ depends on FREETZ_REAL_DEVELOPER_ONLY__DLTC || FREETZ_AVM_VERSION_06_9X_MAX
+ depends on !(!FREETZ_REAL_DEVELOPER_ONLY__DLTC && FREETZ_SYSTEM_TYPE_IPQ40xx)
+ depends on !(!FREETZ_REAL_DEVELOPER_ONLY__DLTC && FREETZ_SYSTEM_TYPE_PUMA6)
+ depends on !(!FREETZ_REAL_DEVELOPER_ONLY__DLTC && FREETZ_SYSTEM_TYPE_QCA956x)
+ depends on !(!FREETZ_REAL_DEVELOPER_ONLY__DLTC && FREETZ_SYSTEM_TYPE_IKS_VX185)
+ depends on !FREETZ_SEPARATE_AVM_UCLIBC
+
+ config FREETZ_BUILD_TOOLCHAIN
+ bool "Build own toolchains (4GB diskspace)"
+
+endchoice # "Toolchains" #
+
+choice
+ prompt "Toolchain version"
+ depends on FREETZ_DOWNLOAD_TOOLCHAIN
+ default FREETZ_DOWNLOAD_TOOLCHAIN_13747
+ help
+ Chose version of precompiled toolchains
+
+ config FREETZ_DOWNLOAD_TOOLCHAIN_13747
+ bool "r13747"
depends on FREETZ_AVM_VERSION_06_9X_MAX
depends on !FREETZ_SYSTEM_TYPE_IPQ40xx
depends on !FREETZ_SYSTEM_TYPE_PUMA6
depends on !FREETZ_SYSTEM_TYPE_QCA956x
+ help
+ Uses r13747 (and some r14612)
- config FREETZ_BUILD_TOOLCHAIN
- bool "Build own toolchains (requires 4GB diskspace)"
+ config FREETZ_DOWNLOAD_TOOLCHAIN_15256
+ bool "r15256"
+ depends on FREETZ_REAL_DEVELOPER_ONLY__DLTC
+ help
+ Use r15256 (and some r13747)
-endchoice # "Toolchains" #
+endchoice # "Toolchain version" #
-comment "Kernel toolchain options ----------------------------------"
+comment "Kernel toolchain options ----------------------------------------"
config FREETZ_KERNEL_BINUTILS_2_18_DEFAULT
bool
@@ -35,7 +61,11 @@
default y
config FREETZ_KERNEL_BINUTILS_2_25_DEFAULT
bool
- depends on FREETZ_AVM_GCC_5_MIN && FREETZ_AVM_VERSION_07_0X_MIN
+ depends on FREETZ_AVM_GCC_5
+ default y
+config FREETZ_KERNEL_BINUTILS_2_31_DEFAULT
+ bool
+ depends on FREETZ_AVM_GCC_8
default y
choice
@@ -44,6 +74,7 @@
default FREETZ_KERNEL_BINUTILS_2_22 if FREETZ_KERNEL_BINUTILS_2_22_DEFAULT
default FREETZ_KERNEL_BINUTILS_2_24 if FREETZ_KERNEL_BINUTILS_2_24_DEFAULT
default FREETZ_KERNEL_BINUTILS_2_25 if FREETZ_KERNEL_BINUTILS_2_25_DEFAULT
+ default FREETZ_KERNEL_BINUTILS_2_31 if FREETZ_KERNEL_BINUTILS_2_31_DEFAULT
config FREETZ_KERNEL_BINUTILS_2_18
bool "binutils-2.18"
@@ -65,7 +96,7 @@
config FREETZ_KERNEL_BINUTILS_2_24
bool "binutils-2.24"
- depends on FREETZ_AVM_GCC_4_6_MIN
+ depends on FREETZ_AVM_GCC_4_6_MIN && FREETZ_AVM_GCC_5_MAX
# depends on any kernel version
depends on FREETZ_KERNEL_BINUTILS_2_24_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)
@@ -74,15 +105,21 @@
# starting with version 2.25 binutils support o32 FPXX
# gcc versions up to 4.9.3 however do not pass the required -m(hard|soft)-float flags to the assembler
# this is the reason for the gcc-4.9 dependency below
- depends on FREETZ_AVM_GCC_4_9_MIN
+ depends on FREETZ_AVM_GCC_4_9_MIN && FREETZ_AVM_GCC_5_MAX
# depends on any kernel version
depends on FREETZ_KERNEL_BINUTILS_2_25_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)
config FREETZ_KERNEL_BINUTILS_2_26
bool "binutils-2.26.1"
- depends on FREETZ_AVM_GCC_4_9_MIN
+ depends on FREETZ_AVM_GCC_4_9_MIN && FREETZ_AVM_GCC_5_MAX
# depends on any kernel version
depends on FREETZ_KERNEL_BINUTILS_2_26_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)
+
+ config FREETZ_KERNEL_BINUTILS_2_31
+ bool "binutils-2.31.1"
+ depends on FREETZ_AVM_GCC_8
+ # depends on any kernel version, used by avm for kernel 4.9 only so far
+ depends on FREETZ_KERNEL_BINUTILS_2_31_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)
endchoice
choice
@@ -92,6 +129,7 @@
default FREETZ_KERNEL_GCC_4_7 if FREETZ_AVM_GCC_4_7
default FREETZ_KERNEL_GCC_4_8 if FREETZ_AVM_GCC_4_8
default FREETZ_KERNEL_GCC_5 if FREETZ_AVM_GCC_5
+ default FREETZ_KERNEL_GCC_8 if FREETZ_AVM_GCC_8
config FREETZ_KERNEL_GCC_3_4
bool "gcc-3.4.6"
@@ -112,6 +150,10 @@
config FREETZ_KERNEL_GCC_5
bool "gcc-5.5"
depends on FREETZ_AVM_GCC_5
+
+ config FREETZ_KERNEL_GCC_8
+ bool "gcc-8.3"
+ depends on FREETZ_AVM_GCC_8
endchoice
config FREETZ_KERNEL_BINUTILS_VERSION
@@ -122,6 +164,7 @@
default "2.24" if FREETZ_KERNEL_BINUTILS_2_24
default "2.25.1" if FREETZ_KERNEL_BINUTILS_2_25
default "2.26.1" if FREETZ_KERNEL_BINUTILS_2_26
+ default "2.31.1" if FREETZ_KERNEL_BINUTILS_2_31
config FREETZ_KERNEL_GCC_VERSION
string
@@ -130,8 +173,24 @@
default "4.7.4" if FREETZ_KERNEL_GCC_4_7
default "4.8.5" if FREETZ_KERNEL_GCC_4_8
default "5.5.0" if FREETZ_KERNEL_GCC_5
+ default "8.3.0" if FREETZ_KERNEL_GCC_8
+
+comment "Target toolchain options ----------------------------------------"
+
+config FREETZ_SEPARATE_AVM_UCLIBC_FORCE
+ bool
+ depends on FREETZ_AVM_PROP_UCLIBC_SEPARATE
+ select FREETZ_SEPARATE_AVM_UCLIBC
+ default y
+
+config FREETZ_SEPARATE_AVM_UCLIBC
+ bool "Separate uClibc"
+ depends on FREETZ_SEPARATE_AVM_UCLIBC_FORCE
+ default n
+ help
+ Puts uClibc of Freetz into /usr/lib/freetz/,
+ needs about 1 MB (uncompressed).
-comment "Target toolchain options ----------------------------------"
choice
prompt "Target uClibc version"
default FREETZ_TARGET_UCLIBC_0_9_28 if FREETZ_AVM_UCLIBC_0_9_28
@@ -139,6 +198,7 @@
default FREETZ_TARGET_UCLIBC_0_9_32 if FREETZ_AVM_UCLIBC_0_9_32
default FREETZ_TARGET_UCLIBC_0_9_33 if FREETZ_AVM_UCLIBC_0_9_33
default FREETZ_TARGET_UCLIBC_1_0_14 if FREETZ_AVM_UCLIBC_1_0_14
+ default FREETZ_TARGET_UCLIBC_1_0_15 if FREETZ_AVM_UCLIBC_1_0_15
config FREETZ_TARGET_UCLIBC_0_9_28
bool "0.9.28"
@@ -162,6 +222,10 @@
config FREETZ_TARGET_UCLIBC_1_0_14
bool "1.0.14"
depends on FREETZ_AVM_UCLIBC_1_0_14
+
+ config FREETZ_TARGET_UCLIBC_1_0_15
+ bool "1.0.15"
+ depends on FREETZ_AVM_UCLIBC_1_0_15
endchoice
comment "CAUTION: Usage of an uClibc version higher than that used by AVM may lead to an unstable box"
@@ -195,12 +259,17 @@
bool
depends on FREETZ_KERNEL_BINUTILS_2_25_DEFAULT
default y
+config FREETZ_TARGET_BINUTILS_2_31_DEFAULT
+ bool
+ depends on FREETZ_KERNEL_BINUTILS_2_31_DEFAULT
+ default y
choice
prompt "Target binutils"
default FREETZ_TARGET_BINUTILS_2_22 if FREETZ_TARGET_BINUTILS_2_22_DEFAULT
default FREETZ_TARGET_BINUTILS_2_24 if FREETZ_TARGET_BINUTILS_2_24_DEFAULT
default FREETZ_TARGET_BINUTILS_2_25 if FREETZ_TARGET_BINUTILS_2_25_DEFAULT
+ default FREETZ_TARGET_BINUTILS_2_31 if FREETZ_TARGET_BINUTILS_2_31_DEFAULT
config FREETZ_TARGET_BINUTILS_2_22
bool "binutils-2.22"
@@ -216,7 +285,7 @@
config FREETZ_TARGET_BINUTILS_2_24
bool "binutils-2.24"
- # depends on any target GCC version
+ depends on FREETZ_TARGET_GCC_5_MAX
# depends on any kernel version
depends on FREETZ_TARGET_BINUTILS_2_24_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)
@@ -231,6 +300,12 @@
depends on (FREETZ_TARGET_GCC_4_9 || FREETZ_TARGET_GCC_5)
# depends on any kernel version
depends on FREETZ_TARGET_BINUTILS_2_26_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)
+
+ config FREETZ_TARGET_BINUTILS_2_31
+ bool "binutils-2.31.1"
+ depends on FREETZ_TARGET_GCC_8
+ # depends on any kernel version
+ depends on FREETZ_TARGET_BINUTILS_2_31_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)
endchoice
choice
@@ -240,6 +315,7 @@
default FREETZ_TARGET_GCC_4_8 if FREETZ_AVM_GCC_4_8
default FREETZ_TARGET_GCC_4_9 if FREETZ_AVM_GCC_4_9
default FREETZ_TARGET_GCC_5 if FREETZ_AVM_GCC_5
+ default FREETZ_TARGET_GCC_8 if FREETZ_AVM_GCC_8
config FREETZ_TARGET_GCC_4_6
bool "gcc-4.6.4"
@@ -264,6 +340,10 @@
bool "gcc-5.5"
depends on FREETZ_AVM_GCC_5 \
|| (FREETZ_AVM_GCC_5_MAX && (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE))
+
+ config FREETZ_TARGET_GCC_8
+ bool "gcc-8.3"
+ depends on FREETZ_AVM_GCC_8
endchoice
config FREETZ_TARGET_GCC_SNAPSHOT
@@ -325,6 +405,7 @@
config FREETZ_TARGET_UCLIBC_1
bool
default y if FREETZ_TARGET_UCLIBC_1_0_14
+ default y if FREETZ_TARGET_UCLIBC_1_0_15
default n
config FREETZ_TARGET_UCLIBC_VERSION
@@ -334,6 +415,7 @@
default "0.9.32.1" if FREETZ_TARGET_UCLIBC_0_9_32
default "0.9.33.2" if FREETZ_TARGET_UCLIBC_0_9_33
default "1.0.14" if FREETZ_TARGET_UCLIBC_1_0_14
+ default "1.0.15" if FREETZ_TARGET_UCLIBC_1_0_15
config FREETZ_TARGET_UCLIBC_MAJOR_VERSION
string
@@ -347,6 +429,7 @@
default "2.24" if FREETZ_TARGET_BINUTILS_2_24
default "2.25.1" if FREETZ_TARGET_BINUTILS_2_25
default "2.26.1" if FREETZ_TARGET_BINUTILS_2_26
+ default "2.31.1" if FREETZ_TARGET_BINUTILS_2_31
config FREETZ_TARGET_GCC_MAJOR_VERSION
string
@@ -355,6 +438,7 @@
default "4.8" if FREETZ_TARGET_GCC_4_8
default "4.9" if FREETZ_TARGET_GCC_4_9
default "5" if FREETZ_TARGET_GCC_5
+ default "8" if FREETZ_TARGET_GCC_8
config FREETZ_TARGET_GCC_MINOR_VERSION
depends on !FREETZ_TARGET_GCC_SNAPSHOT
@@ -364,6 +448,7 @@
default "5" if FREETZ_TARGET_GCC_4_8
default "4" if FREETZ_TARGET_GCC_4_9
default "5.0" if FREETZ_TARGET_GCC_5
+ default "3.0" if FREETZ_TARGET_GCC_8
config FREETZ_TARGET_GCC_VERSION
string
@@ -377,6 +462,7 @@
default "6.0.19" if FREETZ_TARGET_GCC_4_8
default "6.0.20" if FREETZ_TARGET_GCC_4_9
default "6.0.21" if FREETZ_TARGET_GCC_5
+ default "6.0.25" if FREETZ_TARGET_GCC_8
config FREETZ_STDCXXLIB
string
@@ -502,7 +588,7 @@
Build the binutils and gcc to run on the target.
Files are installed into toolchain/target/target-utils.
-comment "Both kernel and target toolchain related options ----------"
+comment "Both kernel and target toolchain related options ----------------"
config FREETZ_TOOLCHAIN_MINIMIZE_REQUIRED_GLIBC_VERSION
# bool "Minimize required GLIBC version" if FREETZ_BUILD_TOOLCHAIN
bool
@@ -528,3 +614,4 @@
in C with more features and better performance.
endmenu # "Toolchain options" #
+
$
- vielleicht wäre
@Massa ja schon geholfen, wenn Du ihm (und anderen, die vor demselben Problem stehen könnten) einfach mal aufschreibst, auf welchem System das mit dem GCC 8.3.0 bei Dir funktioniert hat.
Man ist ja nicht gezwungen, unbedingt Ubuntu zu verwenden (die Versionsangabe 20.01 kommt mir - in Verbindung mit "die aktuellste" - aber auch komisch vor, denn das wäre wohl die 20.04.1) und wenn das auf einem anderen System besser funktioniert, wäre es ja einen Versuch wert.
Wenn ich das richtig sehe, führt ja weder bei Freetz noch bei Freetz-NG mittlerweile ein Weg daran vorbei, daß man sich die eigene Toolchain übersetzen lassen muß (was entsprechende Zeit braucht), wenn man eine halbwegs aktuelle FRITZ!OS-Version benutzen will/muß - da sollte das schon einigermaßen funktionieren, auch dann, wenn man das "from scratch" macht und wenn sich mittlerweile andere "prerequisites" ergeben haben sollten (viele Distributionen bieten 32-Bit-Development-Files nur noch über Kompatibilitätspakete an), wäre sicherlich auch eine "neue Liste" dieser Pakete sinnvoll (falls erforderlich - ich arbeite ohnehin mit einer vollkommen anderen Linux-"Linie", wo die Pakete alle ganz anders heißen und weiß es für Debian/Ubuntu gar nicht immer 100%, was sich da jeweils ändert).
----------------------------------------------------------------------------------------------
Aber hier kommt dann auch gleich noch eine weitere Frage an
@Massa dazu ... war das denn auch eine "frische" Konfigurationsdatei oder gab es da ggf. auch entsprechende Leichen drin? Auch ein generelles "make dirclean" fehlt mir oben in #1 irgendwie ... welches "make target" jetzt welche Aufgaben hat, findet man z.B. in einer Datei unterhalb der Freetz-"Installation":
https://github.com/Freetz/freetz/blob/master/howtos/make_targets.txt - hat Freetz-NG auch nur wenig geändert. Das (m.W.) neue Ziel "listnewconfig" ist nicht beschrieben und bei Freetz-NG ist halt noch ein uraltes "release"-Target enthalten, was beim Klonen von Freetz-(NG-)Installationen aus VCS-Plattformen im Internet nur noch wenig Sinn ergibt und daher in Freetz auch Geschichte ist.
Die Toolchain-Konfigurationen in Freetz (
@fda89 schrieb ja, daß er die - ich denke mal jenseits der Änderungen zum GCC 8 - üblicherweise nicht anpackt) sind auch ein wenig "kritisch" im Hinblick darauf, was sich mit einer "gebrauchten" Konfigurationsdatei dabei ergibt - das hängt in weiten Teilen davon ab, was in der alten Datei stand. Ich hatte mal eine (erbitterte/ausführliche) Diskussion dazu bei Freetz im GitHub (
https://github.com/Freetz/freetz/pull/55) - falls sich jemand dafür interessiert, warum man bei neuer Version (der Toolchain, die etwas von den Änderungen zwischen FRITZ!OS-Versionen abhängig ist) am besten mit einer leeren Konfigurationsdatei starten sollte.
Möchte man gerne seine bisherigen Einstellungen zu den ausgewählten Paketen beibehalten (und haben sich bei den Paketen nicht entscheidende Teile geändert, was eher sehr selten der Fall ist), kann man das entweder von Hand übernehmen (alles schön über das "make menuconfig") oder man "bereinigt" diese alte Konfigurationsdatei erst einmal um alle geräte- und versionsspezifischen Anteile (die gerätespezifischen sind spätestens dann im Weg, wenn man mit der Konfiguration auf ein neues Modell umziehen will), bevor man das "make menuconfig" aufruft.
Exakt für diesen Einsatzfall hatte ich den Pull-Request für Freetz ja vorgesehen ... und auch wenn der in Freetz nicht aufgenommen wurde, existiert er weiterhin als Commit in meinem eigenen Fork (der auch nur diese Änderungen beinhaltet) und kann problemlos zu einem Freetz-Checkout hinzugemischt werden (
https://github.com/PeterPawn/YourFreetz/commit/38ae6d2749526870fa748fa5d7b0e3242bf87a15). Hat man den bei sich in der Installation, kann man mittels "make reuseconfig" (also "re-use config" - das hat mit Fischfang nichts zu tun) vor einem "make menuconfig" alle Einstellungen entfernen lassen, die bei so einer Konfiguration stören könnten. Dann muß man halt im Menü als ersten Schritt erneut das Modell und die Firmware-Version auswählen - dabei werden dann auch die passenden Einstellungen für die Toolchain erzeugt.
Wie weit der Patch jetzt auch für Freetz-NG paßt (speziell mit der Position im "Makefile" und bei der Frage, ob die Präfix-Liste der zu entfernenden Einstellungen noch stimmt, nachdem die in Freetz-NG ja heftig geändert wurden), weiß ich nicht ... will ich jetzt auch nicht ermitteln. Das kann jeder selbst machen ... alles das, was nach dem "clrconfig" noch mit "...=y" in der ".config" steht, sollte zu Paket-Konfigurationen gehören oder zu anderen Einstellungen, die weder geräte- noch versionsabhängig sind.