某些 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 编写的共享库中,如何提供此输出?我现在已经执行了刚刚创建的库,但出现了段错误。
注意:我之前在 Unix & Linux SE 上问过这个问题 here .
最佳答案
下面的 main 定义负责打印您看到的输出。它在 glibc 源代码树的 csu/version.c 中定义。我希望这会有所帮助。
#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
关于c - 在 Unix 上执行共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25377740/