2009-04-07 3 views
22

У меня есть общая библиотека (* .so), созданная с использованием инструментов Real View Compiler Tools (RVCT 3.2) для целевых окон. Затем я пытаюсь связать этот файл * .so с моим приложением, используя gcc on linux.Ссылка на общую библиотеку с использованием gcc

Какая опция gcc связать эту общую библиотеку с моим приложением linux?

Мой вопрос, является -shared вариант, который используется в качестве

gcc -shared myfile.so 

..., используемый для создания SO файл или связать SO файл? Я считаю, что это создает что-то вроде:

gcc -lmyfile.so 

Этого достаточно? Или есть ли другой переключатель, чтобы сообщить компоновщику, что это динамическая библиотека (общий объект)?

ответ

12

gcc -lmyfile должно быть достаточно (при условии, что ваша библиотека называется libmyfile.so). Линкер ищет по возможности общие объекты, и AFAIK предпочитает их.

+0

У меня есть связанный с этим вопрос: В случае, если моя библиотека libmyfile.so является символической ссылкой на libyourfile.so, будет связывая свою программу с помощью GCC -lmyfile все еще работает? (Мне нужно поддерживать обратную совместимость некоторых клиентов, которые не знают об изменении имени библиотеки.) – baskin

+3

@jpalecek Это работает, если имя файла имеет расширение .dll? – saadtaame

+1

Что делать, если библиотека не находится в '/ usr/bin/ld'? –

18

То, что сработало для меня было:

gcc -L. -l:myfile.so 
+0

Большое спасибо. Помогло много –

+0

Что это за команда? – Gaunt

+0

-L {путь к файлу, содержащему библиотеку} -l $ {имя библиотеки} если у меня есть библиотека с именем libmine.so в/home/newhall/lib /, то я бы сделал следующее, чтобы связать ее с моей программой: $ gcc -o myprog myprog.c -L/home/newhall/lib -lmine [Справочный сайт] (https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html) – Gowrav

Смежные вопросы