1

Debian の最新の安定したバージョンで、DebHelper を使用して Debian パッケージを作成しています。

「debian/control」ファイルは次の行で構成されています。

Depends:
 ${shlibs:Depends},
 ${misc:Depends}

したがって、依存関係は作成されたパッケージに自動的に設定されます。ただし、libstdc++ に必要なバージョンは厳しすぎます。パッケージには libstdc++6 ( >= 4.9 ) が必要であり、 libstdc++6 ( >= 4.8 )として設定したい。

この目的のために、このページとこのページを読んで、「debian/rules」ファイルを次のように編集しました。

#!/usr/bin/make -f

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

%:
    dh $@ 

override_dh_makeshlibs:
    dh_makeshlibs -V 'libstdc++6 (>= 4.8)'

ただし、最後の 2 行はうまくいきませんでした。Debian パッケージでこの種のカスタマイズを行った人はいますか?

ありがとう

4

1 に答える 1

0

一般に、debhelper は依存関係の検出に非常に優れています。

パッケージに が必要libstdc++6 (>= 4.9)であると表示されている場合、パッケージにはこの特定のバージョンが必要である可能性が高く、たとえばlibstdc++6-4.8. (信じられない場合は、試してみてください。libstdc++6-4.8 しかインストールされていないシステムにパッケージを強制インストールし、すべてが機能するかどうかを確認してください)

libstd++6-4.8(またはむしろ)でビルドできると主張する人がいる場合gcc-4.8、可能性が見えます:

  • その人たちが間違っているか
  • または、バイナリ (パッケージ内) は、libstdc++6-4.8 または 4.9 に対してビルドされたかどうかに応じて、わずかに異なります。

ほとんどの場合、2番目のポイントが当てはまります。

これにはさまざまな理由が考えられます。たとえば、- パッケージが libstdc++6-4.9 を検出すると、自動的に機能を有効にします - libstdc++6 の一部の実装の詳細が変更されたため、結果のバイナリが非互換になりました (または、少なくとも後方互換性がありません)。

libstdc++6 == 4.8 で使用できるパッケージが必要な場合は、パッケージのビルドに使用する必要がありますlibstdc++6-4.8(または、g++4.8 ツールチェーン全体を使用する可能性が最も高い)。

于 2015-05-31T18:49:39.267 に答える