2
(ともEGLIBC、私は信じている)は、libc.so
ライブラリはmain()
メソッドを持っている)(メインと共有ライブラリの作成:が<a href="https://www.gnu.org/software/libc/" rel="nofollow noreferrer">glibc</a>で
$ /lib/i386-linux-gnu/libc.so.6
GNU C Library (Debian GLIBC 2.19-18+deb8u1) stable release version 2.19, by Roland McGrath et al.
Copyright (C) 2014 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.8.4.
Compiled on a Linux 3.16.7 system on 2015-08-30.
Available extensions:
crypt add-on version 2.1 by Michael Glad and others
GNU Libidn by Simon Josefsson
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.debian.org/Bugs/>.
は、今私は、次の最小限の例と同じことをやりたいと(つまり、私は)ので、私自身もmain()
を持つようにしたい:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Hello, World!\n");
return 0;
}
:
ここで、共有オブジェクトとしてリンク:
$ gcc -g -O0 -Wall -c test.c
$ gcc -shared -o libtest.so test.o
$ ./libtest.so
Segmentation fault
nm
をデバッグするとき、gdb
が意味のあるバックトレースを示していない- (
000004f5 T main
)main
シンボルが存在することを示しています。 -fpic
または-fPIC
をgccコマンドラインに追加することは役に立ちません。
私は間違っていますか?
@Someprogrammerdude解決したい特に問題はありません。私は、 'main()'がほとんど役に立たないということを完全に理解しています。私はちょうどそれがglibcでどのように行われているかを調べようとしています。 – Bass