Помогите разобраться в чем дело...
Сначала суть. Весь проект лежит в каталогах типа
bin/
lib/
src/
lib1/
lib2/
bin1/
bin2/
В каждом каталоге есть makefile. Никаких необычных флагов и опций компиллятора я не использую.
Из каталогов lib1, lib2 собираются библиотеки и кладутся в lib. Соответственно из bin1, bin2 собираются бинарники (к ним линкуются библиотеки из lib) и кладутся в bin.
Объектные файлы для библиотек архивируются командой ar.
Теперь интересное.
Когда я пытаюсь собрать из своих библиотек и исходников бинарника бинарный файл, то линкер выдает массу ошибок о том, что ссылка не определена (undefined reference). Причем, если я в makefile'e поменяю местами -llib1 и -llib2, то ошибок становится еще больше или меньше, зависит от того что компилю. Оно так должно быть??? Может быть у меня какие-то хитрые зависимости между файлами образовались или вообще рекурсия где-то? Ладно, идем дальше.
Если я в makefile'e не указываю свои библиотеки, а просто говорю чтобы слинковать все объектные файлы из всех нужных каталогов (lib1/*.o), то ошибок нет вообще и все собирается на ура.
Больше всего непонятно то, что некоторые бинарники собираются (из этих же билиблиотек) без проблем, а некоторые ну ни в какую не хотят.
ЗЫ: все опции и флаги сборки везде одинаковы - проверял и не один раз.
Если забыл написать какие-то подробности - спрашивайте.
Fedora Core 3
GNU gcc 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
GNU ld version 2.15.92.0.2 20040927
В каком месте копать?
Заранее спасибо.