Re: Помогите с линковкой библиотеки
Роман Кисилев -> Artem Chuprina @ Thu, 27 Sep 2007 15:59:58 +0400:
>> РК> Суть проблемы:
>> РК> Система Debian Etch x86_64
>> РК> Есть кусок кода, написанный с участием библиотеки SFL от IMATRIX
>> РК> (www.imatrix.com) еще лет 5 назад.
>> РК> Библиотеку стянул, после доработки напильником файлы стали компилироваться, но
>> РК> линковаться не хотят.
>> РК> С линковщиком никогда не заморачивался, поэтому даже понять не могу, что ему
>> РК> надо. Пишет вот такую шнягу:
>>
>> РК> /usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../lib64/crt1.o: In function
>> РК> _start':
>> РК> ../sysdeps/x86_64/elf/start.S:109: undefined reference to `main'
>> РК> sflbits.o: In function `bits_create':
>> РК> sflbits.c:(.text+0x1d): undefined reference to `mem_alloc_'
>> РК> sflbits.c:(.text+0x5b): undefined reference to `mem_alloc_'
>> РК> sflbits.c:(.text+0xd2): undefined reference to `mem_free_'
>>
>>
>> РК> и т.д. много раз.
>> РК> Может кто подскажет куда копать, а то время поджимает.
>> РК> Заранее спасибо за ответы!
>>
>> Судя по ругани на отсутствие функции main, ты ее пытаешься собирать как
>> программу, а надо - как библиотеку (-shared, если речь идет о gcc).
>>
>>
РК> Спасибо. Опция -shared помогла, правда попросила еще и -fPIC - это что такое?
Создавать перемещаемый код (Position-Independent Code). Поскольку
библиотека shared, в какое место в памяти ее положит загрузчик - это как
повезер. Компилятор, кажется, уже при компиляции объектников должен
быть об этом в курсе. При линковке так точно.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
Unix-like -- для кинестетиков, Emacs -- для аудиалов, Mac -- для визуалов,
Windows -- для чайников
RockMover in <RM279891167063140rmover@golovolomka.net>
Reply to: