LINUX.ORG.RU

man gcc (ключи -l и -L) и man dlopen

phoenix ★★★★
()

Библиотеку назови libmydll.so При компиляции укажи флаги -L <путь к дир где библиотека> -lmydll.so Можно и без -L но тогда надо чтоб либы лежала в каталоге который описан в /etc/ld.so.conf. Никаких особых премудростей при вызове функций библиотеки не надо.

KIV
()
Ответ на: комментарий от KIV

что-то не получается, я сделал маленький пример

msg.c //--------------------- #include <stdio.h>

void message(char *msg) { printf("Ваше сообщение:\n%s",msg); } //--------------------

и test.c //-------------------- #include <stdio.h> int main (int argc, char *argv[]) { message("Hello, World!!!"); scanf("%s", s); return 0; } //--------------------

вот команды: gcc -fPIC -c msg.c gcc -shared -o msgdll.so msg.o

gcc -c test.c -lmsgdll.so

сначала он не находил dll а потом написал gcc -lmsgdll.so: linker input file unused because linking not done

может я что-то неправильно делаю? подскажите

Aka
() автор топика
Ответ на: комментарий от Aka

Вы man-ы принципиально не читаете или где?

gcc -fPIC -c msg.c 
gcc -shared -o libmsg.so msg.o
ar q libmsg.a msg.o
gcc -L. -lmsg -o test.c test.c
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
./test

Обратите внимание на имя либы, оно начинается с "lib", это важно

phoenix ★★★★
()
Ответ на: комментарий от phoenix

спасибо братан, очень помог

Aka
() автор топика
Ответ на: комментарий от phoenix

у меня еще вопрос возник вот допустим лежат у меня файлы test.c, test.h, makefile

в makefile: test.o: test.c test.h

что там написать чтобы при наборе make создавалась *.о и соответсвенно *.so и желательно в общем виде

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