私はdlopen
で任意の共有オブジェクトファイルを読み込むべきC++コードを持っています。残念ながら、いくつかのシステム(例えば、私のarchlinuxは、ubuntuとgentoo上のいくつかの.soにも当てはまります)では、これらのso-fileは実際のバイナリの代わりに "GNU ld scripts"になることがあります。参考のためdlopenを使ってGNU ldスクリプトを読み込み
は、ここに私の/usr/lib/libm.so
の内容は次のとおりです。
/* GNU ld script
*/
OUTPUT_FORMAT(elf64-x86-64)
GROUP (/usr/lib/libm.so.6 AS_NEEDED (/usr/lib/libmvec.so.1))
私はghcまたはrubyでこの問題に対処するコードピースのカップルを発見しました。私は、テキストとファイルをdlerror
の解析に基づいてテキストファイルを手作業で解析することを避けたいと思います。私はそれがひどく悪いと感じ、このフォーマットのコーナーケースを実装し維持することはできません。
このケースを処理するための明確な方法はありますか?率直に言って、私はなぜdlopen
が実際にこれらのトランパラファレントに対応していないのかということに困惑しています。
注:上記のパッチを考慮すると、これは単に私のシステム構成/バージョンの問題ではないと思います。これがdlopen
(機能が欠落しているのではなくバグ)ですぐに使用できる場合は、教えてください。
最近あなたのld.soは十分ですか? – marcolz
特定の言語に関連するものではなく、読み込み/リンクに関するものです。 – Olaf
@Olaf私は私のC++プログラムで使用できる解決策を探しています。私は実行時にC++/Cコードを使ってライブラリをロードしているので、これは関連していると考えています。 – Zulan