Роман Кисилев -> 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: [EMAIL PROTECTED]

Unix-like -- для кинестетиков, Emacs -- для аудиалов, Mac -- для визуалов, 
Windows -- для чайников
        RockMover in <[EMAIL PROTECTED]>


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Ответить