Forum: Mikrocontroller und Digitale Elektronik ESP32 + MP3 Player + CMake


von mp3noob (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

evtl kann mir jemand beim Verständnis eines Buildproblems auf dem ESP32 
mit idf 4.3(hab ich aber auch mti den anderen 4.x Versionen) helfen.

Ich habe ein bestehendes MP3 Radio Projekt von BuddyC  asino vom alten 
IDF Buildsystem auf CMake konvertiert.

Soweit so gut. Ich habe nur an einer Stelle bei einer Komponente das 
Problem,
das eine der Komponenten drei andere Komponenten ums verrecken nicht 
einbinden kann bzw. findet.

 Generating ld/esp32.project.ld
1
[19/20] Linking CXX executable esp32_mp3_decoder.elf
2
FAILED: esp32_mp3_decoder.elf
3
cmd.exe /C "cd . && C:\Users\funky\.espressif\tools\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe  -mlongcalls -Wno-frame-address   @CMakeFiles\esp32_mp3_decoder.elf.rsp  -o esp32_mp3_decoder.elf  && cd ."
4
c:/users/funky/.espressif/tools/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/audio_player/libaudio_player.a(audio_player.c.obj):(.literal.start_decoder_task+0x24): undefined reference to `mp3_decoder_task'
5
collect2.exe: error: ld returned 1 exit status
6
ninja: build stopped: subcommand failed.
7
ninja failed with exit code 1

Die Komponente audio_player benutzt je nach Format die Komponenten 
mp3_decoder, libfaad_decoder und fdk_aac_decoder.

Entferne ich die Verweise auf die Decoder dann kompiliert alles.
Ich habe es mal soweit runtergestrippt, das ich nur den mp3_decoder 
verwende, aber sobald ich den als Komponente einbinde, kann ich das 
ganze nicht linken.
Ich hatte testweise mal die jeweiligen Decoder direkt in den 
audio_player eingebunden und nicht als Komponente gelinkt und das 
funktionierte dann auch.

Nur diese Komponentenlösung funktioniert nicht und ich würde gerne 
verstehen was ich da falsch machen. Bei undefined reference fehlt dem 
Compiler doch eigentlich die entsprechende Source? Aber ich bin der 
Meinung, dass die eingebunden ist und ich sehe in den Logs auch, dass 
die Komponente kompiliert wird.

Gibt es jemand der sich ein wenig mit IDF & ESP32 auskennt und mir 
verraten kann wo da der Fehler liegt?

1000 Dank

von mp3noob (Gast)


Angehängte Dateien:

Lesenswert?

ok, falls es jemanden interessiert: es geht, aber durch Sachen die 
meiner Meinung nach nicht so sein sollten. Oder verpeile ich da etwas?

z.B. in der libfaad_decoder Komponente binde ich in der CMakelists.txt 
die Sourcen der Komponente libm4a direkt ein.
Eigentllich linke ich doch aber die libm4a Komponente direkt hinzu und 
das einbinden der einzelnen Sourcen direkt sollte nicht nötig sein?

von 900ss (900ss)


Lesenswert?

Schon mal bei Espressif im Forum gesucht ob es dieses Problem schon gab? 
Oder dort die Frage gestellt? Vermutlich bekommst du dort eher das 
Problem gelöst.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.