バイナリの実行に問題があります。プログラムがセグメンテーション違反を受信しています。フィルタリングは gdb の出力です
gdb a.out
(gdb) run
Starting program: a.out
Program received signal SIGSEGV, Segmentation fault.
0x00000001 in ?? ()
(gdb)
次に、nmユーティリティを使用しました
nm -u a.out
U Allocatememory
多くのシンボルが未定義であることがわかりました。この a.out バイナリは、実際には他の多くの .so をリンクすることによって取得されます。.soの1つでnmを実行しました
nm libmylib.so
00000000000de6f T Allocate memory
このプログラムは、上記の libmylib.so とリンクされています。リンク中にエラーは発生しません。
g++ -m32 -shared -Wl -o a.out -lmylib
ただし、-shared オプションがないと、次のエラーが発生します。
/usr/bin/ld: <path_to_bin>/a.out: hidden symbol `__dso_handle' in
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/32/crtbegin.o is referenced by DSO
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
*** Error code 1
何が問題なのですか?これを克服する方法を教えてもらえますか?前もって感謝します