우분투 10.04에서 this script from oracle to get active NFS clients을 테스트하려고하는데이를 실행할 수 있습니다.dtrace : 스크립트를 컴파일하지 못했습니다. 전 처리기를 찾을 수 없습니다.
이를 달성하기 위해 먼저 these instructions 다음에 dtrace를 설치했습니다.
apt-get install bison flex zlib1g-dev libelf-dev binutils-dev libdw-dev libc6-dev-i386
wget ftp://crisp.dyndns-server.com/pub/release/website/dtrace/dtrace-20121009.tar.bz2
tar xfj dtrace-20121009.tar.bz2
cd dtrace-20121009
make all
make install
make load
그러나, 내가 컴파일이 경고를 얻을 : 내가 libdw-dev
및 binutils-dev
을 설치 한
=================================================================
=== You need /usr/lib/libdwarf.a and /usr/lib/libbfd.a installed to build.
===
=== apt-get install binutils-dev
=== apt-get install libdw-dev
===
=== Without these, we will not build ctfconvert (needed for
=== SDT structure definitions).
=================================================================
cd cmd/instr ; make --no-print-directory
cd usdt/c ; make --no-print-directory
tools/mkdriver.pl all
Executing: /usr/src/dtrace/dtrace-20121009/tools/make-me
make -C /lib/modules/2.6.38-16-server/build M=/usr/src/dtrace/dtrace-20121009/build-2.6.38-16-server/driver
CC [M] /usr/src/dtrace/dtrace-20121009/build-2.6.38-16-server/driver/systrace.o
LD [M] /usr/src/dtrace/dtrace-20121009/build-2.6.38-16-server/driver/dtracedrv.o
Building modules, stage 2.
MODPOST 1 modules
LD [M] /usr/src/dtrace/dtrace-20121009/build-2.6.38-16-server/driver/dtracedrv.ko
tools/mkctf.sh
build/ctfconvert not available - so not building the linux.ctf file
NOTE: The build is complete, but build/ctfconvert is not available.
This means you will get run time errors from the io.d and sched.d files
due to undefined kernel structure definitions. Simply delete or rename
these files until a fix can be put in place to handle older
distros which do not have the required libdwarf dependencies.
(Typical error is references to undefined struct definitions such
as dtrace_cpu_t).
sync
을하지만, 메이크를 살펴 복용 보인다 이것은 내가 정확히 무슨 짓을했는지입니다 그것은 내 시스템에서 libdwarf.so
을 찾고 libdw
은 libdw.so
입니다.
이것을 회피하려면, ln -s /usr/lib/libdw.so /usr/lib/libdwarf.so
으로 심볼릭 링크를 만듭니다. 그렇게하면 컴파일이 실패합니다.
cd cmd/ctfconvert ; make --no-print-directory
gcc -g -I. -I../../ -I../../libctf -I../../common -I../../uts/common -I../../linux -I/usr/include/libdwarf -c dwarf.c
In file included from dwarf.c:94:
/usr/include/dwarf.h:56: error: expected identifier before numeric constant
/usr/include/dwarf.h:136: error: expected identifier before numeric constant
/usr/include/dwarf.h:321: error: expected identifier before numeric constant
/usr/include/dwarf.h:461: error: expected identifier before numeric constant
/usr/include/dwarf.h:517: error: expected identifier before numeric constant
make[3]: *** [../../build/ctfconvert.obj/dwarf.o] Error 1
make[2]: *** [all] Error 2
make[1]: *** [do_cmds] Error 2
tools/bug.sh
make: *** [all] Error 1
그럼, 취소하겠습니다. 나는 심볼릭 링크를 제거하고, 다시 컴파일하고, make install
과 make load
을 실행하고 모든 것이 잘되기를 바란다. 그리고 모든 것이 괜찮은 것 같습니다.
는하지만, 그때는 위에서 언급 한 스크립트를 실행하려고, 그것은 실패
# ./get_ngs_clients.d
dtrace: failed to compile script ./get_ngs_clients.d: Preprocessor not found
내가 무슨 일이 일어나고 있는지에 대한 단서가 없다. 나는을 위해 gcc를 설치했다.
# dpkg -l | grep gcc
ii gcc 4:4.4.3-1ubuntu1 The GNU C compiler
ii gcc-4.4 4.4.3-4ubuntu5.1 The GNU C compiler
ii gcc-4.4-base 4.4.3-4ubuntu5.1 The GNU Compiler Collection (base package)
ii gcc-4.4-multilib 4.4.3-4ubuntu5.1 The GNU C compiler (multilib files)
ii gcc-multilib 4:4.4.3-1ubuntu1 The GNU C compiler (multilib files)
ii lib32gcc1 1:4.4.3-4ubuntu5.1 GCC support library (32 bit Version)
ii libgcc1 1:4.4.3-4ubuntu5.1 GCC support library
혹시이 문제를 해결 했습니까? – AGS
아니, 죄송합니다. 나는 dtrace가 해결하려고했던 문제를 다루기 위해 다른 접근법을 사용했다. –
감사합니다. Jorge! 나는 계속 볼거야. – AGS