LINUX.ORG.RU

Вопрос по линковке с gcc


0

0

Вопрос по линковке с gcc

подскажитке ламеру, как бороть следующую проблему:

//--------------------- 1. есть libtest1.a: [ildar@lucky libs]$ ar t libtest1.a Class1.o

//--------------------- 2. есть libtest2.a: [ildar@lucky libs]$ ar t libtest2.a Class2.o

//--------------------- 3. код в Class2 использует код в Class1: #include "Class2.h" #include "Class1.h"

Class2::Class2() { Class1 class1; }

Class2::~Class2() { }

//--------------------- 4. есть main.cpp: #include "Class2.h"

void main(void) { Class2 class2; }

//--------------------- 5. пытаюсь собрать программу: gcc -c main.cpp gcc -o main.x main.o -L . -ltest1 -ltest2

//--------------------- 6. Пишет следующее: ./libtest2.a(Class2.o): In function `Class2::Class2(void)': Class2.o(.text+0x11): undefined reference to `Class1::Class1(void)' Class2.o(.text+0x24): undefined reference to `Class1::~Class1(void)' collect2: ld returned 1 exit status

Дело скорее всего в каком-то ключе, но каком не знаю. никто не подскажет ?

(просьба к info gcc не отсылать)

anonymous

ne pomnu tochno no pomoemu nado bylo sdelat' esche ranlib

tvn
()

ranlib надо было точно сделать.

Он делает что-то напоминающее построение индексов (в каком объектнике что лежит). То есть при линковке будет будет использоваться не весь test1.a и test2.a, а только те функции которые реально вызываются.

Для того, чтобы потом заюзать весь *.a нужно будет линкеру об этом сказать.

Banshee
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.