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を認識させることができるようになりました。