Closed qryxip closed 1 year ago
おっとなるほどです! issue作成ありがとうございます!!
原因の調査だけしてみました。
Ubuntu 20.04から(正確には19.04から)、/lib
が/usr/lib
へのシンボリックリンクになった(UsrMerge)ことで、CIで想定していないディレクトリ構成になったことが原因かもです。
具体的には、以下の処理が怪しいです。
18.04では、/lib/arm-linux-gnueabihf
は存在しませんが、/usr/lib/arm-linux-gnueabihf
は存在していました。
20.04では、(UsrMergeで)/lib/arm-linux-gnueabihf
が存在するようになったので、96行目で作成されるシンボリックリンクは、想定された/lib/arm-linux-gnueabihf
ではなく、/lib/arm-linux-gnueabihf/lib
になっていそうです。
97行目では/lib/arm-linux-gnueabihf
直下を検索するため、/lib/arm-linux-gnueabihf/lib
以下は検索されず、ld-*.so
が見つかからず、エラーメッセージ(/lib/ld-linux-armhf.so.3: No such file or directory
)にある/lib/ld-linux-armhf.so.3
が作成されていないのかなと思います。
97行目の/lib/ld-linux-armhf.so.3
はシンボリックリンクのターゲットにするパスを変更すれば作成できそうですが、
96行目の/lib/arm-linux-gnueabihf
の直下にその他のARM向けの*.so
(/usr/arm-linux-gnueabihf/lib
にあるもの)を配置する処理が必要かどうかはよくわからないです。
(94行目のコメントによるとコンパイル中にExec Format Errorというエラーが起きないようにするための変更らしいですが、泥臭い処理なので他の方法で代替できればした方がいいとは思います)
環境再現用のコマンド
# Ubuntu 18.04
docker run --rm -it ubuntu:18.04 bash
apt update
apt install gcc-8-arm-linux-gnueabihf g++-8-arm-linux-gnueabihf
# Ubuntu 20.04
docker run --rm -it ubuntu:20.04 bash
apt update
apt install gcc-8-arm-linux-gnueabihf g++-8-arm-linux-gnueabihf
なーーーるほどです!!
armhf環境でどうビルドするのが筋が良いのかよくわかりませんね・・・。 onnxruntimeのarm64ビルドあたりをどうしているか探ればヒントが得られるかもですが、普通にarm64マシンでビルドすることを想定されていたりしそうですし 😇
あるいは、ディレクトリ先を変更しちゃえばとりあえずビルドできたりしそうでしょうか。 いったん泥臭くてもいいのでワークアラウンドで解決でも良いのかもとかちょっと思いました。
https://github.com/VOICEVOX/onnxruntime-builder/pull/8#issuecomment-1475076711
この件についてまだあまり調べていませんが、今CIが落ちている状態なのでissueを立てたいと思います。