ページ 11

4倍精度浮動小数点のstaticリンク方法について

Posted: 2024年9月19日(木) 16:08
by 新米C言語プログラマー
Linuxで4倍精度浮動小数点(_Float128)を使用したC言語のsoファイルを実行しています。usr/local/lib64にインストールされたlibquadmath.soを実行時に使用しています。現状は問題なく動作しています。
この4倍精度浮動小数点(_Float128)を使用したC言語のsoファイルを別のLinuxで実行したいのですが、quadmathがインストールされていません。
そこで、quadmathをstaticリンクしたsoファイルを作成してquadmathがインストールされていない環境で実行したいのですが、可能でしょうか。
以下のPROGAをコンパイルしたのですが、エラーとなってしまいます。
gcc -shared -lm -fPIC PROGA.c -mlong-double-128 -o libPROGA.so -v -static -lquadmath

エラー内容
`__TMC_END__' can not be used when making a shared object
/usr/bin/ld: 最終リンクに失敗しました: 出力に対応するセクションがありません

どなたか、ご教授していただければ助かります。

Re: 4倍精度浮動小数点のstaticリンク方法について

Posted: 2024年9月27日(金) 17:16
by 新米C言語プログラマー
別の手段で、自己解決しました。

Re: 4倍精度浮動小数点のstaticリンク方法について

Posted: 2025年12月18日(木) 18:53
by Willow
私の理解では、shared object に quadmath を static リンクすること自体が前提として非対応です。libquadmath は PIC 前提の完全 static 利用を想定しておらず、-static と -shared を同時に使うとそのエラーになります。実運用では実行ファイル側を static 化するか、対象環境に quadmath を同梱して rpath で解決するのが現実的だと思います。

Re: 4倍精度浮動小数点のstaticリンク方法について

Posted: 2025年12月20日(土) 12:54
by naohiro
フォーラムルールには「解決した時は、「解決しました」とだけ言って去らず、ソースコードや解決した方法を明記して下さい。」と明記しています。

つまり「別の手段で、自己解決しました。」といっても何も解決にも至ってないことに等しいです。


質問者は解決した方法を記載してください。

Re: 4倍精度浮動小数点のstaticリンク方法について

Posted: 2025年12月24日(水) 16:18
by soras2
shared object に libquadmath を static リンクすることはできません。-static と -shared の併用は非対応のためエラーになります。対応策は実行ファイル側を static 化するか、libquadmath.so を同梱して rpath や LD_LIBRARY_PATH で読み込ませる方法になります。