Linker, loader en uitvoerbare formaten
Bij het linken van een C-programma verschijnt de fout „undefined reference to `foo'”. Wat is de meest waarschijnlijke oorzaak?
- AEr zit een syntaxisfout in foo
- Bfoo is in twee bestanden gedefinieerd
- Cfoo wordt aangeroepen, maar het bestand of de bibliotheek met de definitie van foo is niet bij het linken betrokken
Antwoord en toelichting tonen
Antwoord: C. foo wordt aangeroepen, maar het bestand of de bibliotheek met de definitie van foo is niet bij het linken betrokken
Als een functie in een headerbestand is gedeclareerd, slaagt het compileren. Maar als bij het linken het objectbestand of de bibliotheek met de definitie van foo niet wordt gevonden, kan het adres voor de aanroepinstructie niet worden bepaald en volgt deze fout. Veelvoorkomende oorzaken zijn dat is vergeten het bestand met de definitie te linken, dat is vergeten de bibliotheek op te geven (zoals -lm), of dat door een verschil in spelling of argumenten een andere naam is ontstaan.
Verder: nog 9 vragen over Linker, loader en uitvoerbare formaten