DPA schrieb:
> Ach so. Eventuell kann man da mit der #include_next extension was
> machen:
Danke für deine Ideen und Tipps.
Mit der include Reihenfolge wird es auch schwierig, die wird vom
Buildsystem zusammengesucht. Könnte man beeinflussen, ist aber sehr
aufwändig.
Das printf und die Varianten werden ja auch von anderen units benutzt,
das ist das grössere Problem. Durch die Wrapper beim Linken erwischt man
automatisch alle units die diese Funktionen benutzen und lenkt alle auf
die wrapper um. Wenn in dem ganzen Programm auch nur einer die org stdio
benutzt hätte man den Code beider Funktionen und genau das will man mit
der Option ja nicht.
Der ARMC6 benutzt clang, mal sehen ob ich das damit testen kann. Den
habe ich aber nur in der Form vom MbedStudio, und da ist vieles fix
vorkonfiguriert und der lässt sich nicht aus der cmd starten.
Beim gcc gibt es die Linkeroption -fuse-ld=lld um clang als Linker zu
benutzen, das hat auch nicht geklappt. Clang habe ich installiert und im
Suchpfad, lld kann ich starten. Braucht man da eine Crosscompiler
Version für ARM?
Dann habe ich noch die -u Option zum 'undefine Symbol' probiert. So wird
z.B. auch main undefined und so der Linker gezwungen die zu suchen.
Klappt mit -u printf aber auch nicht.
Wenn es nicht geht dann auf den nächsten gcc warten :) Das LTO scheint
sehr komplex zu sein, da hatte ich vorher auch schon viel mit
rumprobiert und viele Fehler bekommen.
Edit:
mit -u klappt es doch, es wurde __wrap_vsnprintf angemeckert und ich
hatte die falsche Funktion angegeben. Irgendwann sollte man Pause
machen...
Mit "-u main -u printf -u vsnprintf" linkt es, jetzt müsste ich mal die
Codegrössen vergleichen.
ok, es compiliert, aber der Code mit -lto ist grösser, das printf ist da
noch aus lib_a_nano drin. Also vertragen sich wrap und lto nicht
wirklich.