2017-01-21 3 views
1

Ich versuche Kernfunktionen zu verfolgen, und ich bin mit -finstrument-functions, das zu tun, aber ich habe nicht definierten Referenzfehler wie folgt:undefiniert Bezug auf -finstrument-Funktionen

arch/arm/kernel/elf.c:9: undefined reference to `__cyg_profile_func_enter' 
arch/arm/kernel/elf.c:13: undefined reference to `__cyg_profile_func_exit' 
arch/arm/kernel/built-in.o: In function `elf_set_personality': 
arch/arm/kernel/elf.c:42: undefined reference to `__cyg_profile_func_enter' 
arch/arm/kernel/elf.c:75: undefined reference to `__cyg_profile_func_exit' 

Es gibt viele weitere Fehler ähnlich oben in drivers auch. Ich habe die __cyg_profile_func_enter und __cyg_profile_func_exit Symbole exportiert, aber immer noch bekomme ich diesen Fehler. Ich benutze linux 4.1 kernel und arm board.

+0

Haben Sie ** die Funktionen '__cyg_profile_func_enter' und' __cyg_profile_func_exit' in Ihrem Code definiert? Wenn ja, wo? – duskwuff

+0

@duskwuff Ja Ich habe es in 'kernel/trace/myfile.c' definiert, aber ich habe sie nicht als' extern' in diesen oben genannten Bibliotheken deklariert, da es Tausende von ihnen gibt, die ich nicht in jede einfügen kann. Gibt es eine Möglichkeit, dies in einer externen Anweisung zu tun, und wenn möglich, wo füge ich sie hinzu? – arceus

+0

'extern' ist eine ** Deklaration **, aber die Fehlermeldung 'undefinierte Referenz' bedeutet Abwesenheit von ** Definition **. Überprüfen Sie, dass 'kernel/trace/myfile.c' tatsächlich kompiliert und in den Kernel ** (' obj-y') kompiliert ist, nicht als Modul ('obj-m'). – Tsyvarev

Antwort

0

Haben Sie auch die Einträge von __cyg_profile_func_enter und __cyg_profile_func_exit in der Header-Datei eingetragen. Wenn nicht, dann bitte pls diese Funktion in der Header-Datei und stellen Sie sicher, dass das Modul kompiliert.

Verwandte Themen