Tak prosté a doteď to nebylo. Neuvěřitelné. Kompilátor samozřejmě vycházel z nějakých systémových settings, kde byla naspecifikovaná platforma.
Ale nevidím důvod, proč by si kompilátor nemohl tento údaj získat třeba ze systemd nebo nějaké utility, která vrací hodnotu architektury (ala uname), tím se vše zase o něco zjednodušší a stane elegantnějším.
To nastaveni nebylo systemove od prekladace, ale skrze KConfig ... viz:
arch/x86/Kconfig.cpu
https://elixir.bootlin.com/linux/v6.12.4/source/arch/x86/Kconfig.cpu
v menuconfig pod:
Processor type and features ---> Processor family (Generic-x86-64) --->
to Generic je nastaveni z konkretni instance odkud jsem to vykopiroval
Pokud vlezete do toho nastaveni, tak mate na vyber nekolik moznosti, ale ani jedna neni "native". Nove se tam prida tahle volba.
Ja rozporoval predchozi komentar, ze se -march bere z beziciho systemu - ne, nebere. Bere se z nastaveni zdrojaku a nastaveni (.config) jadra, kdyz si ho kompilujete sam.
Konkretne krome genericke -march, je tam na vyber pouze tohle:
cflags-$(CONFIG_MK8) += -march=k8 cflags-$(CONFIG_MPSC) += -march=nocona cflags-$(CONFIG_MCORE2) += -march=core2 cflags-$(CONFIG_MATOM) += -march=atom
Pokud jde o strukturovaná data (aby to nebyl jeden velký texťák s hromadou hodnot v lidsky čitelném jazyce nebo nějakém nespecifikovaném pseudo-formátu), tak to jde i v těch syntetických souborových systémech (/proc, /sys, ...). V souboru máš jednu konkrétní hodnotu a těch virtuálních souborů a složek je tam víc a je to hezky strukturované. Resp. ne jen že to jde, ale je to běžný standard.
D-Bus je k tomuhle trochu duplicitní technologie. Resp. je to spíš věc podobná SNMP nebo JMX. Ostatně to „D“ v názvu znamená „Desktop“. Daleko větší smysl to dává třeba v případě, že multimediální přehrávač chce vystavit svoje API (a ty pak můžeš zapnout/vypnout přehrávání i jinudy než přes GUI toho přehrávače). D-Bus má svoje kouzlo a využití, ale pro zjišťování informací o procesoru by to neměla být primární natož jediná cesta.
Treba ze je to multiplatformni a nemusim se trapit assemblerem na obskurnich platformach. Linux fakt neni jen x86 a arm. Plus ta informace muze byt zmenena vuci tomu co rika hw - treba v pripade vadneho hw, nebo hw ktery neco nechce priznat, ale funguje to. To fakt nechci resit rucne podle nejakych errata.