@deep_orange

Cи, линковка с разделяемой библиотекой с нестандартными именами символов, реально?

Приветствую, господа.
Есть библиотека .so. Разделяемая, использую Linux. Суть в том, что в этой библиотеке символы (имена функций) имеют не специфичные для С имена. Например crpt.Sha2 - т.е. имена содержат точку, что для C непозволительно. Да я знаю, что с помощью objcopy все символы можно переименовать. Вопрос как раз в том, существует ли способ не манипулируя библиотекой, а, скажем, подправив заголовки исправить ситуацию? Или всё таки это нереально?

P.S.: я не имею ввиду dlopen и dlsym и пр., интересует реально ли в заголовках переписать/переименовать/заменить (простите, не знаю как выразится) имя символа, чтобы в программе использующей библиотеку оно выглядело по другому (так как схавает Си).

P.P.S.: Компилятор gcc, переносимость не интересует. Использование иных инструментов, кроме "стандартного набора" (gcc, ld, ...) не предполагается.

Решение найдено

Вобщем то нашёл одно решенице, редактирую заголовки

extern void* crpt_Sha2(void*) asm("crpt.Sha2");

и всё прекрасно работает. Даже со свистом. (Вызываю уже функцию crpt_Sha2).

Всем спасибо - коллективный разум - это мощь.
Может у Вас есть альтернативные решения?
  • Вопрос задан
  • 2333 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы