내가 구축 한 서버에 대한 무언가가 고장났습니다 (나는 그것을 사용하는 유일한 사람이 아닙니다 ...). SLES 11 (SP가 없음)입니다. gcc, glibc 등을 제거하고 다시 설치해 보았습니다. 성공하지 못했습니다.세분화 오류를 일으키는 Glibc 링크 차이점
문제는 memset 또는 strlen과 같은 라이브러리 함수에 도달하자마자 내 빌드 된 프로그램 seg-faults입니다 (함수 자체가 아니라 매개 변수 자체가 아니라이 함수를 호출 함). 분명히 잘못 연결되었다고 생각합니다. 그리고 그것은 그것이 독자와 어떻게 다른지를 증명할 수 있습니다. 예를 들면 :
이69: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.0 (2)
2035: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]@GLIBC_2.0
그것의 매우 표준 메이크 아무것도가 변경되었습니다 말한다 이전 작업 버전 대
# readelf -s myprog | grep memset
247: 081461d0 52 <OS specific>: 10 GLOBAL DEFAULT 27 [email protected]_2.0 (3)
3530: 081461d0 52 <OS specific>: 10 GLOBAL DEFAULT 27 [email protected]@GLIBC_2.0
. 링커 플래그는 다음과 같습니다 당신의 glibc는 정말이 부팅 할 때 혹시 쉘에 도달하지 않을 고장 인 경우
LDFLAGS = -L$(companylibrarypath) -lourcompanylibrary -L$(mysql_lib_path) -lmysqlclient -L/usr/tls/ -lpthread -pthread -lz -L$(curl_lib_path) -lcurl -lxslt
처음부터 다시 작성하십시오. 오래된 개체 파일 일 수 있습니다 ... –
나는 그것을 시도했습니다. 또한 printf와 memset만으로 새로운 프로그램을 만들었습니다. memset은 똑같은 문제가 있습니다 ... – user3194963
@ user3194963 아주 단순한 프로그램 일지라도 그 프로그램의 버그가 아니라는 것이 얼마나 확실합니까? (즉, 우리에게 그 테스트 프로그램을 보여주고, 전체적으로). – nos