Выполнение общей библиотеки в Unix - PullRequest
16 голосов
/ 11 февраля 2011

Некоторые общие библиотеки Unix предоставляют вывод при вызове из командной строки, как если бы они были исполняемыми файлами.Например:

$ /lib/libc.so.6 
GNU C Library stable release version 2.13, by Roland McGrath et al.
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.5.2.
Compiled on a Linux 2.6.37 system on 2011-01-18.
[...]

В моей общей библиотеке, написанной на C, как я могу предоставить этот вывод?Теперь я выполнил библиотеку, которую только что создал, и у меня возникла ошибка сегмента.

Примечание.

1 Ответ

11 голосов
/ 11 февраля 2011

Приведенное ниже определение main отвечает за печать выводимых данных. Это определено в csu / version.c исходного дерева glibc. Надеюсь, это поможет.

#ifdef HAVE_ELF
/* This function is the entry point for the shared object.
   Running the library as a program will get here.  */

extern void __libc_main (void) __attribute__ ((noreturn));
void
__libc_main (void)
{
  __libc_print_version ();
  _exit (0);
}
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...