how to create shared library on Linux

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
dima
Житель
Сообщения: 690
Зарегистрирован: 19 фев 2003, 19:26
Откуда: Хабаровск->Toronto

how to create shared library on Linux

Сообщение 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

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

Вопрос - как это все построить ?
Аватара пользователя
Groundhog
Графоман
Сообщения: 5099
Зарегистрирован: 20 авг 2005, 16:36
Откуда: Vancouver

Re: how to create shared library on Linux

Сообщение Groundhog »

Линкер не находит ваши библиотеки в стандатных местах.
Можете - по вкусу:
- поместить их (обе) в стандартное место (тогда можете использовать -la -lb);
- добавить путь к вашеи директории где вы держите А и В библиотеке(тогда можете использовать -la -lb)
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./ в данном случае ваша текущая дирецтория;
- использовать опшон -L чтобы указать путь к вашей библиотеке.
Аватара пользователя
dima
Житель
Сообщения: 690
Зарегистрирован: 19 фев 2003, 19:26
Откуда: Хабаровск->Toronto

Re: how to create shared library on Linux

Сообщение dima »

то что надо.
Заработало!
Спасибо!
Ответить