Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Линковка динамической библиотеки в gcc

86K
27 февраля 2013 года
DIAMON
11 / / 27.02.2013
Добрый день!
У меня следующий вопрос: я пишу в IDE QNX Momentics со встроенным компилятором gcc и мне нужно прилинковать вместо libc.so (которая идет в составе IDE) свою версию libc, только проблема в том, что у моей версии libc расширение *.dll (!) следовательно опция "-l" ориентируется на "*.a" и "*.so", а мне нужно на "*.dll"
Моя версия libc.dll взята с целевой системы QNX Neitrino, имеет формат ELF. На борту целевой системы все библиотеки имеют расширение *.dll.
Подскажите, как линковать dll-библиотеки в gcc?
360
27 февраля 2013 года
P*t*
474 / / 15.02.2007
Возможно я что-то не понимаю, но я всегда считал, что динамические библиотеки не линкуются по определению.
Динамические библиотеки подгружаются программой уже в процессе работы.
86K
27 февраля 2013 года
DIAMON
11 / / 27.02.2013
Хорошо, если вы так считаете, то скажите мне пожалуйста, откуда тогда берется таблица импорта?
412
27 февраля 2013 года
grgdvo
323 / / 04.07.2007
Есть такая опция: -nodefaultlibs
Похоже на ваш случай. Это чтобы стандартные библиотеки автоматически не линковать.

А вот по части расширения в QNX.....
Я, конечно, не специалист в QNX, но всегда считал что это Unix-like OS и, соответственно, попахивает ересью: *.dll в Unix-like операционной системе??!
Всегда были *.so для динамического связывания. dll - это в Windows.
Переспрошу, вы точно ничего не путаете?
360
27 февраля 2013 года
P*t*
474 / / 15.02.2007
Гм. Действительно.
Можно попробовать что-нибудь вроде этого:
 
Код:
ln -s libc.dll mylibc.so
gcc -nostdlib -L. -lmylibc -o prog prog.c
86K
27 февраля 2013 года
DIAMON
11 / / 27.02.2013
я пробовал с -nostlib, стандартные библиотеки из поиска исключает, но libc.dll найти не может, я же говорю, что опция -l ищет по шаблону "lib + name + "a || .so"
412
27 февраля 2013 года
grgdvo
323 / / 04.07.2007
-nostdlib и -nodefaultlib : разные вещи! прочитайте man
414
27 февраля 2013 года
CassandraDied
763 / / 24.05.2012
Не всё стащил. Кроме dll должна быть и a, В ней нет исполняемого кода, она только указывает, где в dll он есть.
412
27 февраля 2013 года
grgdvo
323 / / 04.07.2007
и еще линкер gcc позволяет указывать имя файла библиотеки чере двоеточие

Цитата:
-l namespec
--library=namespec
Add the archive or object file specified by namespec to the list of files to link. This option may be used any number of times.
If namespec is of the form :filename, ld will search the library path for a file called filename, otherwise it will search the
library path for a file called libnamespec.a.

86K
27 февраля 2013 года
DIAMON
11 / / 27.02.2013
а что делать если libc.a для моей libc.dll нету?
414
27 февраля 2013 года
CassandraDied
763 / / 24.05.2012
Читать это.
86K
27 февраля 2013 года
DIAMON
11 / / 27.02.2013
Цитата: grgdvo
Есть такая опция: -nodefaultlibs
Похоже на ваш случай. Это чтобы стандартные библиотеки автоматически не линковать.

А вот по части расширения в QNX.....
Я, конечно, не специалист в QNX, но всегда считал что это Unix-like OS и, соответственно, попахивает ересью: *.dll в Unix-like операционной системе??!
Всегда были *.so для динамического связывания. dll - это в Windows.
Переспрошу, вы точно ничего не путаете?


точно ничего не путаю, расширение там *.dll

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог