g++ 컴파일시 에러입니다 ld terminated with signal 8
안녕하세요.
g++ 컴파일시 아래와 같은 에러가 나타납니다.
이 문제를 해결하기 위한 방법 아시는 분은 답변 부탁드립니다. ^^;
# linking release version of xxxxxx.
/usr/local/bin/g++ -mc -g -o xxxxxx_r release/xxxxxx_main.o release/xxxxxx.o release/xxxxxx_proc.o release/xxxxxx_tcp.o release/xxxxxx_thr.o release/nodemgmt.o release/nodemgmt_util.o -L/home/make/lib -lpthread -lxxutil -lxxlog -lxxsyslog -lxxini -lxxsocket -lsocket -lxxsys -lxxzlib -lz -lfcfg -lxxcrypt -lcrypt -lssl -lxxdbproc
collect2: ld terminated with signal 8 [Arithmetic Exception], core dumped
ld: warning: global symbol '_END_' has non-global binding:
(file /usr/local/ssl/lib/libssl.so value=LOCL);
ld: warning: global symbol '_START_' has non-global binding:
(file /usr/local/ssl/lib/libssl.so value=LOCL);
gmake: *** [xxxxxx_r] Error 1
=================================================================================================================
------> file core
core: ELF 32-bit LSB core file 80386 Version 1, from 'ld'
------> pstack core
core 'core' of 881: /usr/ccs/bin/ld -Y P,/usr/ccs/lib:/usr/lib -Qy -o xxxxxx /usr/local/
cfedd80c process_cap (cf400018, cf61e7d0, cf61eb80) + 40
cfee002a process_elf (cf61e7d0, 810b220, cf400018) + 7c6
cfee0663 ld32_process_ifl (cf61e7a0, cf61e7b3, 7, 810b220, 0, cf400018) + 383
cfee0aa8 ld32_process_open (cf61e7a0, cf61e7b3, 7, cf400018, 0, 8046940) + a8
cfee0ce9 process_req_lib (cf473318, cf400ae0, cf0e43fb, cf400018, 8046940) + 11d
cfee0fc3 ld32_finish_libs (cf400018) + 28b
cfed970e ld32_process_files (cf400018, 33, 8046a84) + c6
cfedb58b ld32_main (33, 8046a84, 3) + 3ab
08051a82 main (33, 8046a84, 8046b54) + ba
080510ce ???????? (33, 8046ce8, 8046cf8, 8046cfb, 8046d13, 8046d17)
------> mdb core
Loading modules: [ ld libc.so.1 ld.so.1 ]
> $C
08046218 libld.so.4`process_cap+0x40(cf400018, cf61e7d0, cf61eb80)
080462b0 libld.so.4`process_elf+0x7c6(cf61e7d0, 810b220, cf400018)
0804638c libld.so.4`ld32_process_ifl+0x383(cf61e7a0, cf61e7b3, 7, 810b220, 0, cf400018)
08046460 libld.so.4`ld32_process_open+0xa8(cf61e7a0, cf61e7b3, 7, cf400018, 0, 8046940)
08046898 libld.so.4`process_req_lib+0x11d(cf473318, cf400ae0, cf0e43fb, cf400018, 8046940)
080469ec libld.so.4`ld32_finish_libs+0x28b(cf400018)
08046a08 libld.so.4`ld32_process_files+0xc6(cf400018, 33, 8046a84)
08046a34 libld.so.4`ld32_main+0x3ab(33, 8046a84, 3)
08046a5c main+0xba(33, 8046a84, 8046b54)
08046a78 _start+0x7a(33, 8046ce8, 8046cf8, 8046cfb, 8046d13, 8046d17)
------> pmap core
core 'core' of 787: /usr/ccs/bin/ld -Y P,/usr/ccs/lib:/usr/lib -Qy -o xxxxxx /usr/local/
08045000 12K rw--- [ stack ]
08050000 8K r-x-- /usr/ccs/bin/ld
08062000 4K rw--- /usr/ccs/bin/ld
08063000 680K rw--- [ heap ]
CEA3E000 1604K r----
CEBD0000 40K r----
CEBDC000 716K r----
CEC90000 4K r----
CEC93000 1388K r----
CEDEF000 168K r----
CEE1A000 156K r----
CEE42000 360K r----
CEE9D000 1524K r----
CF01B000 768K r----
CF0DC000 332K r----
CF130000 40K r----
CF140000 4K r----
CF148000 72K r----
CF15B000 140K r----
CF17F000 224K r----
CF1B8000 164K r----
CF1E2000 288K r----
CF22B000 68K r----
CF23D000 68K r----
CF24F000 72K r----
CF262000 852K r----
CF338000 92K r----
CF350000 348K r----
CF3A8000 88K r----
CF3BF000 256K r----
CF400000 8192K rwx--
CFC02000 84K r----
CFC18000 92K r----
CFC30000 24K r----
CFC3C000 84K r----
CFC52000 88K r----
CFC69000 76K r----
CFC7D000 76K r----
CFC91000 80K r----
CFCA6000 84K r----
CFCBC000 76K r----
CFCD0000 4K r----
CFCE0000 4K r----
CFCF0000 4K r----
CFD00000 196K r-x-- /lib/liblddbg.so.4
CFD41000 8K rw--- /lib/liblddbg.so.4
CFD43000 4K rw--- /lib/liblddbg.so.4
CFD50000 1080K r-x-- /lib/libc.so.1
CFE60000 4K r----
CFE6E000 32K rwx-- /lib/libc.so.1
CFE76000 8K rwx-- /lib/libc.so.1
CFE80000 132K r-x-- /lib/libelf.so.1
CFEB1000 8K rw--- /lib/libelf.so.1
CFEC0000 556K r-x-- /lib/libld.so.4
CFF50000 24K rwx--
CFF5B000 20K rw--- /lib/libld.so.4
CFF70000 4K rwx--
CFF80000 4K rwx--
CFF90000 4K rw---
CFFA0000 4K rw---
CFFB0000 4K rwx--
CFFC1000 172K r-x-- /lib/ld.so.1
CFFF0000 4K rwx--
CFFF9000 4K rwx--
CFFFC000 8K rwx-- /lib/ld.so.1
CFFFE000 4K rwx-- /lib/ld.so.1
total 21792K
------> pldd core
core 'core' of 787: /usr/ccs/bin/ld -Y P,/usr/ccs/lib:/usr/lib -Qy -o xxxxxx /usr/local/
/lib/libld.so.4
/lib/libelf.so.1
/lib/libc.so.1
/lib/liblddbg.so.4
------> pflags core
core 'core' of 787: /usr/ccs/bin/ld -Y P,/usr/ccs/lib:/usr/lib -Qy -o xxxxxx /usr/local/
data model = _ILP32 flags = MSACCT|MSFORK
/1: flags = 0
sigmask = 0xffffbefc,0x0000ffff cursig = SIGFPE
....
http://en.wikipedia.org/wiki/SIGFPE
이거라네요!
근데 ld 자체가 죽은거 같은 느낌인데요....
링크단계에서 산술 에러가 났다는 것은 어딘가의
링크단계에서 산술 에러가 났다는 것은 어딘가의 어셈블리 코드가 깨진 것일 수도 있을것 같습니다.
혹시 플랫폼에 맞지 않는 라이브러리가 있는것 아닐까요?
64비트 플랫폼인데 32비트 라이브러리가 있다거나
파일 자체가 깨진 라이브러리가 있거나 할 수 있을것 같습니다.
트레이스를 보면 링커가 elf 헤더를 읽다가 죽는것 같으므로
링크되는 라이브러리 파일들을 점검해보시는것도 방법일것 같습니다.
/usr/local/bin/g++ 랑
/usr/local/bin/g++ 랑 /usr/ccs/bin/ld 가 보이는데..
같은 툴체인이 맞나요?
댓글 달기