0

HPUX では、+h リンク オプションを使用して、boost 1.39.0 共有ライブラリに正しいパスが含まれるようにする必要があります。

-Wl,+h$(SPACE)-Wl,$(<[-1]:D=) 

( http://www.nabble.com/HPUX-aCC:-Howto-avoid-building-boost-libraries-containing-absolute-library-path-references-when-calling-bjam-install-td17619511.htmlから)

gcc.jam ツールセット ファイルをハッキングして、これが機能することをテストしました。

796c796
<     "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)
---
>     "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,+h$(SPACE)-Wl,$(<[-1]:D=) -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)

しかし、今は恒久的な解決策が欲しいのですが、どうすればよいかわかりません。

まず bjam 条件文をactions link.dllセクションに入れてみましたが、そのセクションにはシェルコマンドが含まれています。

次に、これらのターゲットの OPTIONS 変数に余分なセクションを追加してみました。しかし、それはリンクに何の影響も与えていないようでした。

gcc.jam最後に( )のコピーとして別のツールセットを作成しようとしましたhpuxgcc.jamが、まったく機能しませんでした。変数名を変更する必要がある場所は他にもあると思いますが、Jam の構文は私の理解を超えています。

これを機能させる方法について、誰かがより良いアイデアを持っていますか? それとも、Boost をビルドする前に、ハック バージョンを実行するパッチに変換するだけでよいのでしょうか? 確かにもっと良い方法がありますか?

質問は次のいずれかだと思います:

a) gcc.jam のリンカー コマンドにテキストを追加するにはどうすればよいですか (プラットフォームによって異なります)。

または:

b) に基づいて新しいツールセットを作成するにはどうすればよいgcc.jamですか?

どちらが簡単ですか...

4

1 に答える 1

1

What does -h option do? Does it set the "soname"? If so, note the HAVE_SONAME and SONAME_OPTION use in the same action. Then, note the block of code in gcc.jam where it is set:

if [ os.name ] != NT && [ os.name ] != OSF && [ os.name ] != HPUX && [ os.name ] != AIX
{
    # OSF does have an option called -soname but it does not seem to work as
    # expected, therefore it has been disabled.
    HAVE_SONAME   = "" ;
    SONAME_OPTION = -h ;
}

You can tweak this according to your platform.

I suggest you follow up with this on boost-boost@lists.boost.org, which is much better place for Boost.Build questions than stack overflow.

于 2009-09-06T07:05:00.183 に答える