Пишем хидер библиотеки:
=== testso.h ===
#include <string>
int myFunc(const std::string &s);
=== testso.h ===
Пишем собственно библиотеку:
=== testso.cpp ===
#include <iostream>
#include "testso.h"
int myFunc(const std::string &s)
{
std::cout << s << std::endl;
return 2+2;
}
=== testso.cpp ===
Компилируем нашу библиотеку:
g++ -shared -fPIC testso.cpp -o libtestso.so
Радуемся пять минут, потом пишем программу использующую
библиотеку:
=== testprog.cpp ===
#include "testso.h"
int main(int argc, char *argv[])
{
myFunc("test");
return 0;
}
=== testprog.cpp ===
Компилируем программу:
g++ testprog.cpp -L. -l testso -o testprog
Копируем библиотеку в каталог с прописанный в путях
загрузчика либо указываем загрузчику что библиотеки
надо искать в текущем каталоге:
export LD_LIBRARY_PATH=.
Запускаем наше бессмертное творение:
$ ./testprog
test
Радуемся жизни и задумываемся о том, что из человека не
умеющего читать документацию (man gcc) хорошего
программиста не получится.