pigpioを使ったC言語コードのコンパイル時にエラー
先日、Raspberry Pi OSにインストールされているpigpioを使いC言語のコードでLチカをやろうと思い、gccでコンパイル後にファイルを実行するときに以下のようなエラーが出た。
initInitialise: Can't lock /var/run/pigpio.pid gpioSetMode: pigpio uninitialised, call gpioInitialise() gpioWrite: pigpio uninitialised, call gpioInitialise()
備忘録として原因と解決策をメモしておく。
実行環境
Raspberry Pi 4 Model B
Raspberry Pi OS (Bullseye)
pigpio 1.79-1+rpt1
gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1)
原因はpigpiodを起動させていたこと
以前、PythonでLチカしたときはpigpiod(pigpioデーモン)を起動させた状態でプログラムを実行していた。ただ、改めて調べたらpigpio.hをincludeしてC言語のライブラリに直接linkしたプログラムを実行する際は、デーモンを止めておく必要があった。
https://raspberrypi.stackexchange.com/questions/38644/pigpio-cant-lock-var-run-pigpio-pid
ということで、以下でデーモンのprocessをkillする。
sudo killall pigpiod
この状態で改めてプログラムを実行したところ、エラーなく無事に通ってLチカもできた。
なお、pigpiodを起動したままデーモンを介してC言語からGPIOを制御するときはpigpiod_if2.hをincludeする。詳細はpigpio公式ページのpigpiod C Interfaceのページを参照。
https://abyz.me.uk/rpi/pigpio/pdif2.html
日記まとめ
ラズパイで遊んでみた軌跡を以下でまとめてます。