1

.deb会社 (および私) が開発しているアプリケーションのパッケージを構築しようとしています。32 ビット ubuntu (12.04 LTS) を使用して 64 ビット パッケージを作成しようとしていますdpkg-buildpackageが、次の警告/エラーが表示されます。

dpkg-shlibdeps: warning/error: couldn't find library X needed by Y.so (ELF format: 'elf64-x86-64'; RPATH: 'some/path/that/does/not/exist')

Xコンパイルされた共有ライブラリの 1 つになると、警告が表示されます。システム ライブラリ (libgcc_s.so.1や などlibstdc++.so.6) の場合、エラーが発生します。

RPATHが存在しないパスを参照しているのはなぜですか?

ところで、32 ビット パッケージを (もちろん 32 ビット用にコンパイルされたファイルで) 作成すると、警告が表示されるだけで (独自の.soファイルについてのみ)、ファイルが作成され.debます。

できれば、debian フォルダーのコンテンツを投稿したかったのですが、ネットワークからファイルを取り出すことができません。必要に応じて、関連する部分を入力できます。

4

2 に答える 2

1

chroot 環境をインストールしamd64、そこにパッケージをビルドします。このようにして、さまざまなマルチアーキテクチャの落とし穴を回避し、クリーンで再現可能なビルドを作成するという追加の利点を得ることができます。

これを非常に簡単にするツールがあります: mk-sbuild.

と をインストールする必要がubuntu-dev-toolsありsbuildます。

次に、 を実行mk-sbuild --arch=amd64 preciseします。これにより、ビルド環境がセットアップされます。

sbuildグループに自分を追加します。adduser <your user name> sbuild

ログアウトして再度ログインすると、グループ メンバーシップが反映されます。

その後、chroot でパッケージをビルドできます。

 sbuild -d precise --arch=amd64 name_of_package.dsc

これは、debuild -Sまたは類似のソース パッケージを既にビルドしていることを前提としています。

于 2014-04-27T04:13:16.703 に答える