Ярлыки

.htaccess (4) тестирование (8) шаблоны проектирования (3) css (5) Debian (6) docker (2) Doctrine2 (6) Git (6) html (4) java (6) javascript (13) jquery (11) LFS (3) linux (23) mac os (4) mod_rewrite (2) MSSQL (4) MySQL (18) ORM Doctrine (17) patterns (3) PDO (3) perl (7) PHP (64) PHPUnit (8) Python (15) SEO (2) Silex (1) SimpleXML (1) SQL (14) ssh (4) Ubuntu (24) Yii1 (1) Zend Framework (19) ZendFramework2 (8)

пятница, 11 февраля 2011 г.

С/С++. Создание динамической библиотеки в Linux.


// HelloWorld.c

#include 

extern myFoo(int var); // объявляем внешнюю функцию

int main() 
{
    int var = myFoo(5);
    printf("myFoo(20) = %d", var);
    return 0;
}


// myFoo.c

int myFoo(int var)
{
    return var + 100;
}

Компиляция с PIC (Position Independent Code), реализует относительную адресацию, для того, чтобы разные программы могли использовать функции библиотеки, находясь в различных адресных пространствах.
gcc -fPIC -c myFoo.c

Создание динамической библиотеки с именем libmyfoo.so c ключом -shared
gcc -shared -o libmyfoo.so myFoo.o

Компиляция основной программы
gcc -c HelloWorld.с

Компиляция программы с динамической библиотекой, используем ключ -l, в названии библиотеки опускаем lib и .so
gcc HelloWorld.o -L. -lmyfoo -o result

Комментариев нет:

Отправить комментарий