LINUX.ORG.RU

Алиасы для функций в библиотеке .so

 ,


1

1

Приветствую всех. Вопрос такой, занимаюсь портированием ПО c Windows на Linux, и столкнулся с проблемой, что имена функций в библиотеке с маленькой буквы, а второе ПО динамически подключает эту библиотеку и ищет функции с большой буквы. В винде это решили через def файл, где написали такие строчки:

EXPORTS
Sign_int16=sign_int16
Sign_int32=sign_int32
Sign_real32=sign_real32
 
и так далее

А в линуксе есть аналог def файлов?

Нагуглил, что можно использовать attribute((alias)), но это просто безумие, функций много, больше тысячи, я с ума сойду)) Так же можно просто переписать имена, или вызовы сделать правильные, но опять же, это очень трудоемко.

Может есть еще варианты? Спасибо.


А в линуксе есть аналог def файлов?

До этапа линковки? Можно использовать objcopy:

objcopy --redefine-sym memcpy=__rt_memcpy Engine.o

Ещё есть алиасы такого вида:

https://github.com/MotoFanRu/P2K-ELF-SDK/blob/master/ep1/src/standalone/bl_variants/lib_gcc.syms

Вместо адреса можно подставлять функции. Использовать так:

https://github.com/MotoFanRu/P2K-ELF-SDK/blob/master/ep1/src/standalone/bl_variants/Makefile.eg1#L44

$(CC) $(LDFLAGS) -Wl,-R lib_gcc.syms bl.o $(LIBS) -o $(TARGET2_ELF)
EXL ★★★★★
()