У меня возникла проблема с моим компилятором, говорящим, что есть «неопределенная ссылка» на функцию, которую я хочу использовать в библиотеке. Позволь мне поделиться некоторой информацией о проблеме:linker woes - undefined reference
- Я кросс компиляция с GCC для C.
- Я вызываю функцию библиотеки, который доступен через включаемый заголовок, который включает в себя еще один заголовок, который содержит прототип ,
- Я включил каталог заголовков, используя -I, и я уверен, что он найден.
- Я сначала создаю файлы .o, а затем связывая их в отдельной команде.
Итак, я думаю, что это может быть порядок, в который я включаю файлы библиотеки, но я не уверен, что это правильный способ их заказа. Я попытался включить папку заголовков как до, так и после файла .o.
Некоторые предложения были бы замечательными и, возможно, и объяснением того, как компоновщик делает свою работу.
Спасибо!
Ответ на ответы
- нет файла библиотеки .a, просто .h и .c в библиотеке, поэтому -l не подходит
- моего понимания файла библиотека заключается в том, что это всего лишь коллекция заголовков и исходных файлов, но, может быть, это коллекция файлов .o, созданных из источника ?!
- не создается объект библиотеки библиотеки, может быть, должно быть? Да, кажется, я не понимаю разницы между включениями и библиотеками ... я буду работать над этим :-)
Спасибо за все ответы! Я много узнал о библиотеках. Я бы хотел, чтобы все ответы были приняты в качестве принятого ответа :-)
Файл заголовка ('.h' по умолчанию) _can_ содержит любой источник C, но _strongly_ обескуражен, чтобы помещать туда что-либо, кроме макроопределений и _declarations_. – vonbrand