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.
Haben Sie ** die Funktionen '__cyg_profile_func_enter' und' __cyg_profile_func_exit' in Ihrem Code definiert? Wenn ja, wo? – duskwuff
@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
'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