hi
ich habe ein beispiel verwendet, nehmen wir hier an, damit der text
nicht zu lange wird, dass hier
base.c ( rboot.c )
base.h ( rboot.h )
verwendet werden. die in den klammern stehenden namen sind vom projekt.
das makefile ist dazu mass geschnitten. ( unten )
habe dann ein extra.c und extra.h neu angelegt und
testweise in der extra.c folgendes eingetragen:
1
#include"extra.h"
2
3
voidmachnichts(void){
4
// dummy
5
}
in der dazu gehörigen header steht:
1
#ifndef EXTRA_H_
2
#define EXTRA_H_
3
4
#define dummytext "sollte gehen\n"
5
6
voidmachnichts(void);
7
8
#endif
die base.c habe ich ergänzt:
1
#include"extra.h"
wenn ich im base.c nun den dummytext einbaue,
1
printf(dummytext);
klappt das.
sobald ich aber die funktion aufrufen will
1
machnichts();
meldet luna undefined referenz to 'machnichts'
an was kann das liegen?
das makefile anbei. es geht um rboot.
da makefile nicht mein lieblingsthema ist, denke ich wird hier der
vernachlässigte fehler auch liegen, zumindest denke ich, müsste ich
explizit die neuen files noch einbauen? oder extra linken?
wer kann die mir mal einbauen?
ergänzungsfrage:
wie kann ich die osapi.h einbauen?
ehrlichgesagt - ich weiss es leider nicht 100 prozent, wie es in luna
geht - ich werkle mit der xtensa - vieleicht sieht jemand anderes den
fehler oder was noch gemacht werden muss oder ich habe das projekt
falsch ergänzt.
danke!
lg
rudi ;-)
Makefile:
wo sind die alle? wo treiben sie sich wieder rum? die espler ;-)
komme echt nicht weiter mit dem anpassen in der luna ide -
spiel mich da wund -
xtensa läuft es so schön - aber luna macht mir immer einen strich
durch die rechnung, will das doch open src stellen, da die meisten
mit der luna ide hantieren.
was muss ich denn im makefile noch angeben?
ich kann mir nur vorstellen dass ich die ganzen extras noch zu schreiben
muss?
wäre hilfreich - auch jeder noch so kleine wink
danke
lg
rudi ;-)
- Fußball!
Ich verwende mittlerweile Eclipse-Mars.
Du must die Header-files nichtnur im *.ino( oder im *.cpp) einfügen,
sondern auch ausdrücklich über rechtsklick-Projekt -> Import , damit
sie wirksam werden!
Bleibe jetzt erstmal bei der Arduino-IDE mit ESP-Addon ..
kettenrad schrieb:> - Fußball!
na klar - ich sag jetzt lieber nichts - sonst hilft mir keiner mehr ;-)
> Ich verwende mittlerweile Eclipse-Mars.> Du must die Header-files nichtnur im *.ino( oder im *.cpp) einfügen,> sondern auch ausdrücklich über rechtsklick-Projekt -> Import , damit> sie wirksam werden!
ich habe im projekt rechtsklick - new - header file und new - source
file gemacht - die files liegen im projekt ordner im gleichen wie die
base und das reicht nicht?
ich werde es mal versuchen..
danke dir vorerst!
>> Bleibe jetzt erstmal bei der Arduino-IDE mit ESP-Addon ..
ich bleib bei der xtensa - mach nur luna wegen den vielen die es nutzen
damit die das dann probieren können.
mal sehen ;-) meld mich wieder.
lg
;-)
Mond schrieb:> Du bist im falschen Forum, merkst Du das nicht?> Oder hast Du da auch schon gepostet und kein Schwein meldet sich?>> Woran das wohl liegt?!
wegen fussball?
menesch bin ich der einzige der kein fussball schaut, kein alkohol
trinkt und nicht raucher ist?
mann.. was ist fussball? im gegensatz zur technik?
;-)
...ja ich sag nichts mehr - sonst hilft mir keiner ;-)
..
ich werde warten ;-)
kettenrad schrieb:> sondern auch ausdrücklich über rechtsklick-Projekt -> Import , damit> sie wirksam werden!
"Source is in the hierachy of destination"
das hab ich mal als ersten lauf angehangen
damit zumindest mal extra.o erstellt wird,
nichts passiert - es erscheint nicht mal in der Console ( EXTRA )
obwohl als ersten eintrag
Das extra muß noch in die all: zeile eingetragen werden
all: $(BUILD_DIR) $(FIRMW_DIR) $(BUILD_DIR)/extra.o
$(FIRMW_DIR)/rboot.bin $(FIRMW_DIR)/testload1.bin
$(FIRMW_DIR)/testload2.bin
m.f.G.
Dieter
Dieter Graef schrieb:> Das extra muß noch in die all: zeile eingetragen werden> all: $(BUILD_DIR) $(FIRMW_DIR) $(BUILD_DIR)/extra.o> $(FIRMW_DIR)/rboot.bin $(FIRMW_DIR)/testload1.bin> $(FIRMW_DIR)/testload2.bin>> m.f.G.> Dieter
Hallo Dieter,
vielen Dank erstmal dass du dir die Zeit und Mühe genommen hast.
Also das hab ich jetzt mal so eingetragen.
Jetzt tut sich etwas:
No rule to make target 'build/extra.o', needed by 'all'
lg
rudi ;-)
ulkig
$(BUILD_DIR)/extra.o: extra.c extra.h
@echo "EXTRA $<"
@$(CC) $(CFLAGS) -c $< -o $@
kann auch raus das ist schon bei
$(BUILD_DIR)/%.o: %.c %.h
@echo "CC $<"
@$(CC) $(CFLAGS) -c $< -o $@
mit drin % ist für beliebige zeichenfolge
m.f.G.
Dieter
Dieter Graef schrieb:> ulkig> $(BUILD_DIR)/extra.o: extra.c extra.h> @echo "EXTRA $<"> @$(CC) $(CFLAGS) -c $< -o $@> kann auch raus das ist schon bei>> $(BUILD_DIR)/%.o: %.c %.h> @echo "CC $<"> @$(CC) $(CFLAGS) -c $< -o $@>> mit drin % ist für beliebige zeichenfolge>> m.f.G.> Dieter
ich habe es jetzt wieder raus..
und deinen vorschlag mal abgeändert so:
anstatt
jetzt wird es compiliert,
jetzt werde ich noch meine funktion aktivieren und mal sehen
ob er die jetzt findet.
danke erstmals! du hast mir sehr geholfen!
lg
rudi ;-)
ps
wie kann ich das handlen eines makefile besser verstehen, gibt es dazu
eine script erklärung? - das ist nicht mein lieblingsthema - gebe es
offen zu. aber ich denke ich habe da nachholbedarf.
jetzt probiere ich das mit der funktion noch...
kann er ja nicht es it ja nur das Objektfile da aber das muß noch durch
den linker .
$(BUILD_DIR)/%.elf: $(BUILD_DIR)/%.o
@echo "LD $@"
@$(LD) -T$(LD_SCRIPT) $(LDFLAGS) -Wl,--start-group $^ -Wl,--end-group
-o $@
linkt aber nur ein einziges file.Besser ist es nach dem kompilieren zu
archivieren und dann das archiv mit den objektdateien durch den linker
zu schicken.
m.f.G.
Dieter
Dieter Graef schrieb:> kann er ja nicht es it ja nur das Objektfile da aber das muß noch durch> den linker .>> $(BUILD_DIR)/%.elf: $(BUILD_DIR)/%.o> @echo "LD $@"> @$(LD) -T$(LD_SCRIPT) $(LDFLAGS) -Wl,--start-group $^ -Wl,--end-group> -o $@> linkt aber nur ein einziges file.Besser ist es nach dem kompilieren zu> archivieren und dann das archiv mit den objektdateien durch den linker> zu schicken.
ok danke Dieter! soweit verstanden.
gibt es denn keine andere möglichkeit?
wie könnte ich extra.o in dem makefile durch den linker jagen?
ich puzzle noch ;-)
aber ich habe es jetzt soweit abgeändert, dass ich das obj file erhalte.
ich habe diesen link gefunden und den werde ich mir mal bei tage
durchlesen.:
http://www.oreilly.de/german/freebooks/rlinux3ger/ch133.html
hast du "deine" funktion auch registriert?
nur Makefile reicht nicht, lua muss deine funktion in das dictionary
aufnehmen, gemaess lua c-bindings musst du sie via luaL_register
registrieren.
zb in app/modules/*.c wird das auch so gemacht.
ev mal "lua c bindings" in die suchmaschine werfen.
@Peter C. (peter_c49)
Danke für den Hinweis!
LUA und LUNA kann man schonmal verwechseln.
(Dennoch, nochmals danke, das Du hier mitliest, - sind ja sonst nicht
allzuviele ..)
Hallo Dieter & kettenrad,
ok - ich komme der Sache schon näher; es bleibt nicht aus, in den How To
zu lesen, wie ein Makefile aufgebaut ist, ein paar Sachen habe ich mir
notiert wie TAB und keine Leerzeichen bei Befehlen.
ich habe kurz Dieters Ergänzung probiert und hatte eine Fehlermeldung:
"create prozess.. angegebene Datei nicht gefunden"
ich werde jetzt noch mal Schritt für Schritt durchgehen, ggfs das
Makefile neu anlegen. Prinzipiel habe ich es in Luna etwas verstanden,
wie die Make Abschnitte funktionieren und die Abhängigkeiten aufgebaut
werden müssen,
da habe ich aber noch Nachholbedarf und lese in dem openbook nach.
einen neuen Eintrag als Abschnitt in der Makefile auf der rechten Seite
der IDE "dieter"
macht dann also im Hintergrund : make dieter
und ruft das Makefile und den Abschnitt dieter: auf.
Ausgabe:
Hallo rudi
rudi 2
Hallo dieter
dieter 2
Soweit verstanden. Ich denke, dass es noch an der einen oder anderen
Variable hängt, ich werde da jetzt intensiver ran gehen, wollte nur kurz
Bescheid geben, soweit verstanden.
Was ich aber nicht verstehe ist, dass meine funtion in der extra.c nicht
gefunden wird, obwohl ich den header extra.h includiere. Dachte immer,
das wäre ausreichend;
Da im rboot Projekt noch andere Abhängigleiten exisitieren und auch ein
esptool2 eine header datei erzeugt, ist der Ablauf etwas komplexer,
denke, dass es an einer bestimmten Abhängigkeit lliegt / Reihenfolge
eingehalten werden muss. Ich werde daher das noch mal auflegen.
Danke bisher an euch beiden und auch an Peter, der es gut gemeint hatte.
Mal sehen ob ich das hinbekomme, ich denke es liegt an den vielen
Möglichkeiten und Vielfalt von allen möglichen Variablen.
Und dazu kommt, dass das Projekt immer wieder refresht werden muss,
komisch ;-) - vieleicht ist das auch ein kleiner bug in luna,
mal sehen.
lg
rudi ;-)
habe ich etwas abgeändert
ich hab mal die neue Variable RBOOTOBJ vorerst weglassen, da geht noch
irgendetwas etwas ab oder ein zeichen oder ein path oder eine variable
damit rboot.elf das extra bekommt habe ich das extra daher noch
zusätzlich mit der "Abhängigkeit" bzw "Vorbedingung"
$(BUILD_DIR)/extra.o
explizit ergänzt.
jetzt compiliert es ohne warnung und fehler.
hey! danke für den ansporn!
ich sehe es ein, da muss ich noch gewaltig nachlesen,
es nutzt der beste projekt code nichts, wenn es am makefile scheitert.
das hab ich auch bei xtensa gesehen, anscheinend ist in der ide aber ein
automatismus eingebaut, denn extra dagegen linken tue ich nicht darin.
ich denke - jetzt hab ich das nötigste um da weiter dran arbeiten zu
können und es LUNA conform zu bringen.
danke!
lg rudi ;-)
Mond schrieb:> Du bist im falschen Forum, merkst Du das nicht?
nein nein - bin schon im richtigen und einzig weiterführendem.
;-)
Dann stelle den Code auch wie versprochen zur Verfügung.
Oder läuft das wie im letzten Jahr, da hatte ich esp Module bei dir
bestellt die nie ankamen..;-((((
Mond schrieb:> Dann stelle den Code auch wie versprochen zur Verfügung.
oha - der Tonfall ist mir sehr bekannt!
guckst du hier,
base:
https://github.com/raburton/esp8266
da esp8266 nur aes128 hw funktionen hat, für die es keine doku gibt
http://bbs.espressif.com/viewtopic.php?f=49&t=965#p3299
meine komplette aes256 ergänzung:
http://bbs.espressif.com/viewtopic.php?f=49&t=965#p3300
das lerning by doing example makefile aus diesem post mit dem extra.c
extra.h und der machnichts() funktion steht in dem post mit der lösung
dazu.
so jetzt geh hausieren damit von forum zu forum -
und lass dir die lorbeeren aufsetzen.
wenn du in erklärungsnot kommst, wie was funktioniert,
kannst ja hier im forum nachfragen, aber bedenke -
nicht alle lesen mit.
>> Oder läuft das wie im letzten Jahr, da hatte ich esp Module bei dir> bestellt die nie ankamen..;-((((
das sind schwere anschuldigungen und fast rufmord "mond"..
..wenn du die esp module bezahlt hast und nie bei dir angekommen sind,
warum meldest du dich erst jetzt hinter vorgehaltener hand?
wenn du mir deinen hübschen namen nennst, werde ich nachsehen,
ob du welche bestellt und bezahlt hattest. wenn es meine unachtsamkeit
war, dann wirst du die module bekommen, die du bezahlt hast, und als
entschädiging sicher auch etwas mehr.
ich kann mir nur sehr schlecht vorstellen, dass du welche bezahlt hast
und ich dir keine gesendet hätte. das lässt sich aber alles leicht
nachprüfen, wenn du mir deinen namen nennst, denn wie du weisst,
habe ich alle sendungen nur gegen nachweis versandt!
was du mit dem src code jetzt anstellen kannst weiss ich nicht.
sicher nichts - denn zum thema des threads konntest du nichts beitragen,
nur rumnöllen, anschwärzen und stänkern.
das übliche halt.
die posting frage wurde gelöst, dank an dieter!
solved.
lg
rudi ;-)
@mond
solltest du auf den sinn kommen und dich fragen,
warum der ganze aes kremple in der rboot.c gelandet ist, dass hat den
grund, weil zu der zeit eben das makefile problem exist war.
dank jetziger situation, um funktionen in extra c und h files
auszulagern und dagegen zu linken etc, brauchst du nur die funktionen in
ein extra c und die typen in ein h file transmieren.
dazu steht bereits im rboot.c und rboot.h absatz marken drin, die dir es
erleichtern, das so umzusetzen und du brauchst keine funktionen
rausfischen.
solltest du damit nicht klar kommen, so frag in einem neuem thread nach,
man hilft dir ganz bestimmt weiter - so oder so.
..
-- Ähm, bevor mich jemand falsch interpretiert:
rudi hats geschafft, - ich habe bei ähnlichen Versuchen auf meinem
Windows XP(32-bit) pure Unordnung in den Umgebungsvariablen erzeugt und
mir alle meine Änderungen "gemerkt" --> dachte ich ..
Also mit dem Source Code kann und will ich definitiv nichts "anstellen",
der geht mir am Popo vorbei.
Ich habe keine Module bezahlt, stand aber auf der Liste, habe dennoch
nie wieder was gehört, Du schuldest mir also NICHTS!
Erschrecke Dich nicht wegen der Groß/Kleinschreibung und den
Satzzeichen, dass ist normal so und führt dazu das der Text schneller
und übersichtlicher lesbar wird.
Bye...
Mond schrieb:> Erschrecke Dich nicht wegen der Groß/Kleinschreibung und den> Satzzeichen, dass ist normal so und führt dazu das der Text schneller> und übersichtlicher lesbar wird.
rechtschreibung, grammatik und satzbau musst du aber noch üben
> Satzzeichen, dass ist normal so und führt dazu das der Text
.................^^.............................^
> und führt dazu das der
...................^
es mus lauten:
> Satzzeichen, das ist normal so und führt dazu, dass der Text schneller
btw
dass das normal ist glaube ich dir ebenso nicht - denn ich stolpere
drüber.
;-)
der etwas "bessere klugscheisser"
sehr hilfreich:
http://www.gnu.org/software/make/manual/make.htmlhttp://www.ijon.de/comp/tutorials/makefile.html
was mich wundert, in keinem der c bücher die ich habe, steht etwas von
make und Makefile drin.
@Jürgen Wolf
das wäre ein sehr gutes und sinnvolles ergänzungskapitel!
beim stöbern hab ich von o'relly noch ein älteres linux buch gefunden,
da ist wenigstens etwas aufgeführt. auch im alten suse 6.3 / 7.0
handbuch.
lg
;-)
r_u_d_i schrieb:> kettenrad schrieb:>> Bleibe jetzt erstmal bei der Arduino-IDE mit ESP-Addon ..> ich bleib bei der xtensa - mach nur luna wegen den vielen die es nutzen
1
| Windows | Linux
2
xtensa | Nein | Ja
3
Arduino | Ja | ?
4
Luna | Ja | ?
5
Code::Blocks | Ja | ?
6
…? | … | …
Ich hoffe, ich komme drum rum, noch ein Linux aufzusetzen, daher die
Frage. Aktuell bin ich mit der Arduino-IDE am schnellsten.
ESP8266-Source-Level-Debugging wäre für mich ein Grund für Linux. Aber
das gibt es ja leider nicht, sondern nur JTAG-Flashen.
Aber Flashen sollte auch mit 2962963bd (1.2%) oder 2000000bd (0%) über
PL2303 oder FT232RL gehen. BTW: 6153846bd (2.6%) mit PL2303 ist
scheinbar das Maximum mit weniger als 3% Abweichung, wenn ich das
richtig sehe.