Страница 1 из 1

how to create shared library on Linux

Добавлено: 24 янв 2008, 06:20
dima
File a.h

Код: Выделить всё

#ifndef A_H
#define A_H
void A();
#endif
file a.cpp

Код: Выделить всё

#include <stdio.h>

void A()
{
	printf("A() get called\n");
}
file b.h

Код: Выделить всё

#ifndef B_H
#define B_H
void B();
#endif
file b.cpp

Код: Выделить всё

#include <stdio.h>
#include "a.h"

void B()
{
	printf("B() get called\n");
	A();
}
file main.cpp

Код: Выделить всё

#include <stdio.h>
#include "b.h"

int main(int argc, char** argv)
{
	B();
	return 1;
}
Компилирую все

$ g++ -shared -fPIC a.cpp -o liba.so
$ g++ -shared -fPIC b.cpp -o libb.so
$ g++ -shared -fPIC b.cpp
$ g++ main.cpp -lb -o main
/usr/bin/ld: cannot find -lb
collect2: ld returned 1 exit status

Библиотеки построились, а главная программа нет

Вопрос - как это все построить ?

Re: how to create shared library on Linux

Добавлено: 24 янв 2008, 15:05
Groundhog
Линкер не находит ваши библиотеки в стандатных местах.
Можете - по вкусу:
- поместить их (обе) в стандартное место (тогда можете использовать -la -lb);
- добавить путь к вашеи директории где вы держите А и В библиотеке(тогда можете использовать -la -lb)
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./ в данном случае ваша текущая дирецтория;
- использовать опшон -L чтобы указать путь к вашей библиотеке.

Re: how to create shared library on Linux

Добавлено: 24 янв 2008, 16:38
dima
то что надо.
Заработало!
Спасибо!