1

私は現在、i686 ライブラリと x86_64 ライブラリの両方をビルドし、それらを同じシステムにビルドしてインストールする必要があるシステムで作業しています。追加のメモリと、64 用にビルドすると壊れる古いコードを使用できます。

リンクされたライブラリの 99% では、これは問題なく機能します。autoconf、rpm-build、および pkg_config の間で、正しいライブラリが問題なく検出されます。残念ながら、MySQL という大きな例外があります。pkg_config スクリプトを出荷するのではなく、独自のカスタム mysql_config スクリプトがあり、ターゲット ABI を尊重しません。最後にインストールされた ABI の値を報告するだけです。

そのため、64 ビットで適切に動作するように移植された最後のコードを取得する一方で、Autoconf MySQL 構成スクリプト (公式の GNU スクリプト、ax_lib_mysql.m4) を編集して報告された CFLAGS を後処理し、この問題を回避しようとしています。ターゲット プラットフォームに応じた LDFLAGS。ここに問題の核心があります。Autoconf M4 で、32 ビットまたは 64 ビットのターゲット用にビルドしているかどうかを検出する良い方法はありますか? 正確な ABI は問題ではありません。主に、/usr/lib と /usr/lib64 のどちらにリンクする必要があるかを知ることです。

一文の質問に小説を書いて申し訳ありませんが、人々がこれを行う方法を尋ねるオンラインの場所をいくつか見つけましたが、誰もが忙しすぎて、それを行うべきではないという理由で答えを得られませんでした。ビルドプロセスをより脆弱にするので、少し準備をしようとしていました. 私はこれが恐ろしいハックであることを知っています (そして、別のアプローチを歓迎します!) が、移行中にシステムの構築を維持するために、これを回避する方法が必要です。

4

1 に答える 1