ここを参考にUbuntu 16.04上でTinyOSのシミュレータ「TOSSIM「のコンパイルしているとPython.hに関するエラーが起きました。
致命的エラー: Python.h: そのようなファイルやディレクトリはありません fatal error: Python.h: No such file or directory compilation terminated.
ここを参考にpythonのパッケージを導入します。
# Python 2.x系 sudo apt-get install python-dev # Python 3.x系 sudo apt-get install python3-dev
Python2.x系と3.x系が選択できるらしい。
今回は古い記事を参考に作業をしていたので2.x系をインストール。
しかし、python-devパッケージを導入後も同様のコマンドを実行すると同じエラー文が表示されました。
hiyoshi@hiyoshi-VirtualBox:~/Documents/tinyos-main/apps/Blink$ make micaz simmkdir -p simbuild/micaz make: python2.72-config: Command not found make: python2.72-config: Command not found make: python2.72-config: Command not found placing object files in simbuild/micaz writing XML schema to app.xml compiling BlinkAppC to object file sim.o ncc -c -shared -fPIC -o simbuild/micaz/sim.o -g -O0 -tossim -fnesc-nido-tosnodes=1000 -fnesc-simulate -fnesc-nido-motenumber=sim_node\(\) -fnesc-gcc=gcc -Wall -Wshadow -Wnesc-all -target=micaz -fnesc-cfile=simbuild/micaz/app.c -board=micasb -DDEFINED_TOS_AM_GROUP=0x22 --param max-inline-insns-single=100000 -DIDENT_APPNAME=\"BlinkAppC\" -DIDENT_USERNAME=\"hiyoshi\" -DIDENT_HOSTNAME=\"hiyoshi-Virtual\" -DIDENT_USERHASH=0xaed9548cL -DIDENT_TIMESTAMP=0x59ba0141L -DIDENT_UIDHASH=0x5426d973L -Wno-nesc-data-race BlinkAppC.nc -fnesc-dump=components -fnesc-dump=variables -fnesc-dump=constants -fnesc-dump=typedefs -fnesc-dump=interfacedefs -fnesc-dump=tags -fnesc-dumpfile=app.xml /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/sim_noise.c: In function ‘sim_noise_gen’: /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/sim_noise.c:291:7: warning: variable ‘noiseIndex’ set but not used [-Wunused-but-set-variable] int noiseIndex = 0; ^ /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/SimMoteP.nc: At top level: /home/hiyoshi/Documents/tinyos-main/tos/chips/atm128/sim/atm128hardware.h:101:3: warning: ‘__nesc_disable_interrupt’ is static but used in inline function ‘__nesc_atomic_start’ which is not static __nesc_disable_interrupt(); ^ compiling Python support and C libraries into pytossim.o, tossim.o, and c-support.o g++ -c -shared -fPIC -o simbuild/micaz/pytossim.o -g -O0 -DIDENT_APPNAME=\"BlinkAppC\" -DIDENT_USERNAME=\"hiyoshi\" -DIDENT_HOSTNAME=\"hiyoshi-Virtual\" -DIDENT_USERHASH=0xaed9548cL -DIDENT_TIMESTAMP=0x59ba0141L -DIDENT_UIDHASH=0x5426d973L /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/tossim_wrap.cxx -I/include/python2.72 -I/home/hiyoshi/Documents/tinyos-main/tos/lib/tossim -DHAVE_CONFIG_H /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/tossim_wrap.cxx:139:20: fatal error: Python.h: No such file or directory compilation terminated. /home/hiyoshi/Documents/tinyos-main/support/make/sim.extra:66: recipe for target 'sim-exe' failed make: *** [sim-exe] Error 1
sudo apt-get install python-devをもう一度実行してpython-devがインストール済みなことを確認。
TOSSIMはC++を利用しているようなので、gccの環境変数”CPATH”にpython.hがあるディレクトリを追加します。
$ sudo vi ~/.bashrc export CPATH=:/usr/include/python2.7/
TOSSIM supports two programming interfaces: Python and C++.
環境変数CPATHに追記後、もう一度TOSSIMのコンパイルコマンドを実行すると解決しました。
hiyoshi@hiyoshi-VirtualBox:~/Documents/tinyos-main/apps/Blink$ make micaz simmkdir -p simbuild/micaz make: python2.72-config: Command not found make: python2.72-config: Command not found make: python2.72-config: Command not found placing object files in simbuild/micaz writing XML schema to app.xml compiling BlinkAppC to object file sim.o ncc -c -shared -fPIC -o simbuild/micaz/sim.o -g -O0 -tossim -fnesc-nido-tosnodes=1000 -fnesc-simulate -fnesc-nido-motenumber=sim_node\(\) -fnesc-gcc=gcc -Wall -Wshadow -Wnesc-all -target=micaz -fnesc-cfile=simbuild/micaz/app.c -board=micasb -DDEFINED_TOS_AM_GROUP=0x22 --param max-inline-insns-single=100000 -DIDENT_APPNAME=\"BlinkAppC\" -DIDENT_USERNAME=\"hiyoshi\" -DIDENT_HOSTNAME=\"hiyoshi-Virtual\" -DIDENT_USERHASH=0xaed9548cL -DIDENT_TIMESTAMP=0x59ba0442L -DIDENT_UIDHASH=0x1b109e79L -Wno-nesc-data-race BlinkAppC.nc -fnesc-dump=components -fnesc-dump=variables -fnesc-dump=constants -fnesc-dump=typedefs -fnesc-dump=interfacedefs -fnesc-dump=tags -fnesc-dumpfile=app.xml /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/sim_noise.c: In function ‘sim_noise_gen’: /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/sim_noise.c:291:7: warning: variable ‘noiseIndex’ set but not used [-Wunused-but-set-variable] int noiseIndex = 0; ^ /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/SimMoteP.nc: At top level: /home/hiyoshi/Documents/tinyos-main/tos/chips/atm128/sim/atm128hardware.h:101:3: warning: ‘__nesc_disable_interrupt’ is static but used in inline function ‘__nesc_atomic_start’ which is not static __nesc_disable_interrupt(); ^ compiling Python support and C libraries into pytossim.o, tossim.o, and c-support.o g++ -c -shared -fPIC -o simbuild/micaz/pytossim.o -g -O0 -DIDENT_APPNAME=\"BlinkAppC\" -DIDENT_USERNAME=\"hiyoshi\" -DIDENT_HOSTNAME=\"hiyoshi-Virtual\" -DIDENT_USERHASH=0xaed9548cL -DIDENT_TIMESTAMP=0x59ba0442L -DIDENT_UIDHASH=0x1b109e79L /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/tossim_wrap.cxx -I/include/python2.72 -I/home/hiyoshi/Documents/tinyos-main/tos/lib/tossim -DHAVE_CONFIG_H /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/tossim_wrap.cxx: In function ‘void SWIG_Python_AddErrorMsg(const char*)’: /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/tossim_wrap.cxx:880:42: warning: format not a string literal and no format arguments [-Wformat-security] PyErr_Format(PyExc_RuntimeError, mesg); ^ g++ -c -shared -fPIC -o simbuild/micaz/tossim.o -g -O0 -DIDENT_APPNAME=\"BlinkAppC\" -DIDENT_USERNAME=\"hiyoshi\" -DIDENT_HOSTNAME=\"hiyoshi-Virtual\" -DIDENT_USERHASH=0xaed9548cL -DIDENT_TIMESTAMP=0x59ba0442L -DIDENT_UIDHASH=0x1b109e79L /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/tossim.c -I/include/python2.72 -I/home/hiyoshi/Documents/tinyos-main/tos/lib/tossim g++ -c -shared -fPIC -o simbuild/micaz/c-support.o -g -O0 -DIDENT_APPNAME=\"BlinkAppC\" -DIDENT_USERNAME=\"hiyoshi\" -DIDENT_HOSTNAME=\"hiyoshi-Virtual\" -DIDENT_USERHASH=0xaed9548cL -DIDENT_TIMESTAMP=0x59ba0442L -DIDENT_UIDHASH=0x1b109e79L /home/hiyoshi/Documents/tinyos-main/tos/lib/tossim/hashtable.c -I/include/python2.72 -I/home/hiyoshi/Documents/tinyos-main/tos/lib/tossim linking into shared object ./_TOSSIMmodule.so g++ -shared -fPIC simbuild/micaz/pytossim.o simbuild/micaz/sim.o simbuild/micaz/tossim.o simbuild/micaz/c-support.o -lstdc++ -o _TOSSIMmodule.so copying Python script interface TOSSIM.py from lib/tossim to local directory *** Successfully built micaz TOSSIM library.
この記事を読んだ人はこんな記事も読んでいます。
致命的エラー: Python.h: そのようなファイルやディレクトリはありません