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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
新米C言語プログラマー

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

#1

投稿記事 by 新米C言語プログラマー » 1年前

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: 最終リンクに失敗しました: 出力に対応するセクションがありません

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

新米C言語プログラマー

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

#2

投稿記事 by 新米C言語プログラマー » 1年前

別の手段で、自己解決しました。

Willow
記事: 10
登録日時: 5日前

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

#3

投稿記事 by Willow » 1日前

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

返信

“C言語何でも質問掲示板” へ戻る