Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В объектном файле нет символов нек-х функций 
:(
    Опции темы
Feldsher
Дата 2.1.2014, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Ребята, всех с наступившим Новым годом!

Подскажите, пожалуйста, в таком вопросе - средствами MinGW собираю динамическую библиотеку из нескольких исходников,  в результирующих объектных файлах нет символов некоторых функций.

Функции типа void, прототипы объявлены в заголовочных файлах, имплеметации - в файлах исходников.

Флаги компиляции
Код
gcc -c -shared -O2 -DNDEBUG -Isrc f1.c f2.c f3.c 
,
флаги компоновки - 
Код

gcc -shared   f1.o  f2.o  f3.o \
-Wl,--export-all-symbols \
-Wl,--out-implib=libsuper.dll.a \
-Wl,--as-needed \
-o libsuper.dll -lssp


Компиляция идёт без сбоев, при компоновке - несколько ошибок "undefined reference" и и одна "bad reloc address". При просмотре объектных файлов символы требуемых функций вообще отсутствуют. Подскажите пожалуйста, как это исправить.

Заранее спасибо!

Это сообщение отредактировал(а) Feldsher - 3.1.2014, 05:40
PM MAIL   Вверх
Cheloveck
Дата 2.1.2014, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



gcc -fPIC -shared ...



--------------------
user posted image
PM Jabber   Вверх
leniviy
Дата 2.1.2014, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: нет
Всего: 5



Цитата(Feldsher @ 2.1.2014,  20:01)
флаги компоновки - 
Код

gcc -shared   f1.o  f2.o \
-Wl,--export-all-symbols \
-Wl,--out-implib=libsuper.dll.a \
-Wl,--as-needed \
-o libsuper.dll -lssp


Компиляция идёт без сбоев, при компоновке - несколько ошибок "undefined reference"

f1.o и f2.o есть. А где f3.o ?

Добавлено через 4 минуты и 27 секунд
Цитата(Cheloveck @  2.1.2014,  20:29 Найти цитируемый пост)
gcc -fPIC -shared ...

под виндой-то? Вроде бы такое только под -m64 нужно, и то не уверен
PM MAIL   Вверх
Фантом
Дата 2.1.2014, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Feldsher @  2.1.2014,  21:01 Найти цитируемый пост)

Подскажите, пожалуйста, в таком вопросе - средствами MinGW собираю динамическую библиотеку из нескольких исходников,  в результирующих объектных файлах нет символов некоторых функций.

f3.o куда делся?
PM   Вверх
Feldsher
Дата 2.1.2014, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Спасибо. Эти моменты неоднократно перепроверял.
shared - флаг компоновки, проверял. fPIC в этой версии MinGW включен по умолчанию (при его явном указании появляется предупреждение о том, что он флаг уже  активирован и его повторное объявление игнорируется).
Список объектных файлов дал как пример, их около 30, компилируются все. Но в существующем объектнике нет символа реализованной в соответствующем исходнике функции.
Просматриваю объектник через nm, название функции в выводе не отображается

Это сообщение отредактировал(а) Feldsher - 3.1.2014, 05:40
PM MAIL   Вверх
Feldsher
Дата 3.1.2014, 05:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Код
gcc -c -shared 
 shared не указал из-за "ачипятки")

Это сообщение отредактировал(а) Feldsher - 3.1.2014, 05:42
PM MAIL   Вверх
tzirechnoy
Дата 3.1.2014, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Попробуйте сократить количество файлов до единственного "ошыбочного", и из него выкинуть всё, кроме объявления "ошыбочной функцыи.
Результат можэте запостить сюда, если сами к тому времени не поймёте что случилось.

PS Да, вангую static в имплементацыи функцыи.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




[ Время генерации скрипта: 0.1223 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.