версионирование символов и dlsym - PullRequest
2 голосов
/ 08 апреля 2011

Я загружаю библиотеку pthread в моей программе, используя dlopen, и выбираю обработчики в pthread_create и pthread_join, используя dlsym.

Как я могу убедиться, что оба обработчика совместимыверсия?Мне все равно, если символы новой версии или старых версий.Я просто хочу, чтобы все, что я использую pthread_create, хорошо работало с pthread_join, которое я получаю.

Я знаю, что есть dlvsym, которому я могу передать явный номер версии, но мне все равноо точных номерах версий, так как я хочу, чтобы мой код не зависел от версий библиотеки.

Ответы [ 2 ]

2 голосов
/ 08 апреля 2011

Единственная причина, по которой существует версия, заключается в плохой попытке ABI-совместимости с программами, скомпилированными с древними версиями glibc, которые на самом деле не будут работать в любом случае.(Они молча сломали ABI хотя бы один раз таким образом, что, насколько я могу судить, не могут быть совместимы.) Просто игнорируйте его.

0 голосов
/ 08 апреля 2011

Похоже, вам нужно "dladdr - найти общий объект, содержащий данный адрес".

Однако, поскольку вы не сказали, какую платформу вы используете, значит, она может быть недоступна.

Посмотрите и посмотрите ..

...