何となくではあるが、試しにSoftEtherのVPNサーバをソースからコンパイルしてみた。
現状で稼働しているサービスなので通るはずなのに、何故かエラーになる。
AIに問い合わせると「CentOS Stream 10(64bit環境)のGCCコンパイラにおいて、ポインタの型チェックが厳密になった(-Wincompatible-pointer-types がデフォルトでエラー扱いになった)ことが原因です。」
となった。
やりかたとして「型エラーを警告(Warning)に格下げするオプション(-Wno-error=incompatible-pointer-types)をコンパイラに指定」するのが良いようだ。
make時に
make CC=”gcc -Wno-error=incompatible-pointer-types”
として、オプションを指定すれば良いとあるのでそれを実行。
問題箇所で止まることは無かったが、違う箇所で今度は引っかかった。
そのエラーは「GCC 14(CentOS Stream 10)から「定義されていない(宣言が見つからない)関数を呼び出した場合、警告ではなく致命的なエラーにする」という極めて厳密なルールに変更されたために発生」とある。
なので今度は更にオプションを追加して
make CC=”gcc -Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration”
として実行してみた
すると問題なくビルドが完了した。
前回は上手く言ったのに、今回は上手く行かなかったのは、サーバの運用過程でコンパイラがアップデートされてそれによる仕様変更が原因だとわかった。
バグとか脆弱性を発生させないようにするための措置なのか?
手間取ったが、今後、仮にまたサーバを再設定するとなった時の参考になるだろう。

コメント