The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"проблемы с линковкой - нужна помощь"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"проблемы с линковкой - нужна помощь" 
Сообщение от gt Искать по авторуВ закладки(??) on 01-Июн-05, 02:34  (MSK)
Помогите разобраться в чем дело...
Сначала суть. Весь проект лежит в каталогах типа
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

В каком месте копать?
Заранее спасибо.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "проблемы с линковкой - нужна помощь" 
Сообщение от DeadMustdie emailИскать по авторуВ закладки(??) on 02-Июн-05, 18:58  (MSK)
Похоже на циклическую зависимость a la lib1 пользует символы из lib2,
а lib2 пользует символы из lib1. Если оно так и если это правильно,
то библиотека должна быть вообще одна.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "проблемы с линковкой - нужна помощь" 
Сообщение от scum emailИскать по авторуВ закладки(??) on 03-Июн-05, 15:03  (MSK)
>просто говорю чтобы слинковать все объектные файлы из всех нужных каталогов >(lib1/*.o), то ошибок нет вообще

Ну значит все нормально, просто при явном задании имен библиотек нарушается нужный порядок их компоновки. Нужно просто выяснить этот порядок, с учетом всех зависимостей, а затем проверить, чтобы вызов соответствующих make файлов проходил строго в этом же порядке. Наверное, какой то make файл пытается слинковаться с библиотекой, которая еще не откомпилировалась другим make файлом. А можно и плюнуть на это дела, раз и так все компонуется без проблем ;)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру