リンカスクリプトまたはマップファイルを使用してシンボルの名前を変更することはできますか? 私はC++とFortranの組み合わせで書かれたコードを、複数のFortranコンパイラ(Linux上で動作するように)に適応させようとしています。これは現在、大文字と小文字を区別するためのオプションを有効にしてSolaris Studioコンパイラ用に作成されています。私はFortranシンボル名のマングリングを自動的に変更する(Makefileなどから)ようにしたいと思います。リンカスクリプトを使用してシンボルの名前を変更する
その含有するリンカースクリプトをエイリアスを作成することが可能であるように見えるん:
C_Function_ = c_function;
ソート-の意志の仕事。残念ながら、このスクリプトを参照するために-Tオプションを追加すると、動作にいくつかの変更が加えられ、libdl.so.2/librt.so.1が見つからないためにエラーが発生します。私がインクルードする必要のあるデフォルトのリンカスクリプトがありますか?私はLinux上でbfdと金のリンカーの両方を試しました。
「-T」を省略すると、これが解決されます。 '提供するものは何をするのですか?これは、シンボルが共有ライブラリにコンパイルされている場合には機能しません。 – okapi
'PROVIDE()'は、使用されている名前がまだ存在しない場合、シンボルにエイリアスが付いていることを保証します。しかし、これがなぜ共有ライブラリを構築するのと衝突するのかはわかりません。 – mfro