[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: