Хотелось бы сделать так, как сделано в libc.so, т.е. при запуске файла вывести версию или что-либо еще. Ткните где искать.
__attribute__((constructor))?
>Хотелось бы сделать так, как сделано в libc.so, т.е. при запуске файла
>вывести версию или что-либо еще. Ткните где искать.#pragma init
дока тут: http://docs.sun.com/app/docs/doc/805-4955/6j4mg806k?a=view
Я, похоже, непонятно объяснил, что мне нужно... Нужна stub-заглушка, которая при тупом запуске на выполнение (не загрузка программой) выдавала внутри зашитую врсию библиотеки.
>Я, похоже, непонятно объяснил, что мне нужно... Нужна stub-заглушка, которая при тупом
>запуске на выполнение (не загрузка программой) выдавала внутри зашитую врсию библиотеки."Доктор, почему меня все игнорируют?" :)
void __attribute__((constructor)) my_stub(void)
{
printf("My version is %d.%d\n",version_major,version_minor);
}
>"Доктор, почему меня все игнорируют?" :)
Так не работает... Компилирует нормально, в конечный файл включает, но результат нулевой. Или специально куда совать нужно? Подробнее плз.
>Так не работает... Компилирует нормально, в конечный файл включает,
>но результат нулевой. Или специально куда совать нужно? Подробнее плз.Честно? Я не пробовал :)
Но должно работать. Возможно я ошибся с указанием места, где надо писать __attribute__, но это вроде как штатный для GCC способ. Погугли насчет примеров.
Посмотрел __attribute__(constructor,destructor),- не то. Это должно сработать если делать dlopen-dlclose.
Если не ошибаюсь, то это делается путем указания линкеру при линковке библиотеки точки входа (опция -е).