2013-03-21 3 views
3

PHP xhprof 확장을 컴파일하려고합니다. 한 서버에서 make이 성공한 경우 다른 서버에서 "inline asm() not supported"로 실패합니다. 관련 코드는인라인 asm()이 지원되지 않으면 어떤 패키지가 누락 되었습니까?

asm volatile("rdtsc" : "=a" (__a), "=d" (__d)); 

두 서버는 유사한 구성으로 데비안을 돌릴 수 있습니다.

질문 : 인라인 어셈블리를 사용하려면 서버간에 어떤 패키지가 누락되었거나 비교해야합니까?

참고 메이크 출력

/bin/sh /usr/local/src/xhprof/extension/libtool --mode=compile cc -I. -I/usr/local/src/xhprof/extension -DPHP_ATOM_INC -I/usr/local/src/xhprof/extension/include -I/usr/local/src/xhprof/extension/main -I/usr/local/src/xhprof/extension -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -DHAVE_CONFIG_H -g -c /usr/local/src/xhprof/extension/xhprof.c -o xhprof.lo 
libtool: compile: cc -I. -I/usr/local/src/xhprof/extension -DPHP_ATOM_INC -I/usr/local/src/xhprof/extension/include -I/usr/local/src/xhprof/extension/main -I/usr/local/src/xhprof/extension -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -DHAVE_CONFIG_H -g -c /usr/local/src/xhprof/extension/xhprof.c -DPIC -o .libs/xhprof.o 
/usr/local/src/xhprof/extension/xhprof.c:1224: inline asm() not supported 
/usr/local/src/xhprof/extension/libtool: line 1111: 23098 Segmentation fault  cc -I. -I/usr/local/src/xhprof/extension -DPHP_ATOM_INC -I/usr/local/src/xhprof/extension/include -I/usr/local/src/xhprof/extension/main -I/usr/local/src/xhprof/extension -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -DHAVE_CONFIG_H -g -c /usr/local/src/xhprof/extension/xhprof.c -DPIC -o .libs/xhprof.o 
make: *** [xhprof.lo] Error 1 
+2

사용중인 컴파일러를 확인하십시오. 'cc','cc --version' 등 –

+0

@MarcGlisse 대단히 고맙습니다. 내 문제를 해결해 주셔서 감사합니다. 사용 된 컴파일러는 작업 서버 gcc에서 tcc입니다. gcc-4. *가 설치되었지만 기본 패키지 "gcc"가 설치되지 않았기 때문에이 사실을 알지 못했습니다. 답변으로 의견을 입력 할 수 있다면 받아 들일 수 있습니다. – Martin

답변

3

분명히이 컴퓨터의 ccgcc에 대한 링크가 아니며 gcc의 확장 된 asm 구문을 이해하지 못하는 다른 컴파일러 (tcc)에 대한 것입니다.

+0

나는 위에서 설명한 것과 같은 문제가있다. 단순한 마음가짐을 가진 사람들을 어떻게 설명 할 수 있습니까? 고맙습니다. – user5950

+0

'sudo apt-get install build-essential' (또는'gcc' 또는'g ++'...) –

1

IT는 asm() 컴파일러 기능이없는하지 않도록, 오류 메시지 수단 "어셈블리 코드 자체가 지원되지 않습니다"라는 수 있을까? 즉, rdtsc 명령어가없는 일부 (반 고대) 프로세서를 구축하고 있습니까?

오류가 발생한 직후의 seg 오류는 일종의 무서운 것입니다.

+0

네, 답변 해 주셔서 감사합니다. 서버상의 다른 커널이고 문제점이있는 서버의 Linux 이미지는 특별 할 수 있습니다. 나는 그것을 더 기본 커널로 바꾸고 다시 시도하려고 노력할 것이다. – Martin