背景
./darknet detector train 〜でyoloの重みをGoogle Colaboratoryで学習させたかったが(ローカルで動作検証済み)、./darknet: permission deniedと権限エラーが表示される
環境
・mac OS Catalina 10.15.6
・Google Colaboratory
・python 3.6.9
・tensorflow 1.4.2
内容
権限エラー
まずは、下記を解決する
./darknet: permission denied
darknetの権限を変更する事で解決した
chmod 755 darknet
しかし、再度エラーが
バイナリファイルの実行エラー
次に、下記を解決する
./darknet: cannot execute binary file: exec format error
これは、コンパイルしたファイルが対応しておらず、実行できないとのこと
gccのバージョンがnvccのバージョンと対応していないようだ
実際、Makefileをmakeした際の出力を確認すると
gnu version! gcc versions later than 5 are not supported!
とgccのバージョンエラーが記載されていた
コンパイラの変更コマンドで確認してみよう
!update-alternatives --config gcc
やはりどうやらgcc 7のためのようだ
解決策
下記コマンドを流し、gcc 4.8をインストールしてデフォルトに設定する
!sudo update-alternatives --remove-all gcc
!sudo update-alternatives --remove-all g++
!sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
!sudo apt-get update
!sudo apt-get install gcc-4.8 g++-4.8
!sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
!sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
!sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 50
!sudo update-alternatives --set cc /usr/bin/gcc
!sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 50
!sudo update-alternatives --set c++ /usr/bin/g++
!sudo update-alternatives --config gcc
!sudo update-alternatives --config g++
コンパイラ変更コマンドで確認した結果、きちんとgcc 4.8をデフォルトとして設定することが出来た
$!update-alternatives --config gcc
There is only one alternative in link group gcc (providing /usr/bin/gcc): /usr/bin/gcc-4.8
Nothing to configure.
以上