OpenSSLのビルドが落ちる
手持ちのRaspberry Pi 3B+ (Ubuntu Server 22.04) でOpenSSL (v3.1.0) のビルドを実行したところ、以下のエラーが発生しビルドできないという事態が発生しました。
cc1: error: '-mfloat-abi=hard': selected architecture lacks an FPU
解決法
config
時に、-march=armv7-a+fp
を引数に含める(gccのオプションを上書きする)
エラーの原因
selected architecture lacks an FPU
というエラーの通り、FPU (Floating-Point Unit, 浮動小数点演算装置) がないと認識されているため発生するようです。
gcc
にはmarch
というオプションがあり、ターゲットとなるシステムのCPUアーキテクチャを設定できます。Raspberry Pi 3B+でのOpenSSLのビルド時にはこれがデフォルトでarmv7-a
に設定されています。このままだとFPUが搭載されていても認識されず、上記のエラーを吐きます。
FPUが搭載されているCPUの場合、march
オプションを変更することでFPUを認識させることができます。オプションで使える変数の一覧はここにあります。今回の場合はarmv7-a+fp
を設定することで、FPUを認識させることができるようになりました。