web-dev-qa-db-ja.com

静的バイナリの作成

アプリケーションをインストールしました[例: fdisk]。しかし、実行にはライブラリが必要でした。 alreadyインストール済みのバイナリから静的バイナリを作成するのに役立つユーティリティ/ツールを探しています。どこでも使えるように。

私が見つけた唯一の信頼できるツールはErmineLight from here ですが、これはシェアウェアです。

同じために利用可能なオープンソースソフトウェアはありますか?

EDIT fdiskは一例です。私はほとんどの場合LFSで作業するので、ユーティリティを使用する必要がある場合は、次の手順に従う必要があります

  1. ソースをダウンロード
  2. 構成、設定
  3. make
  4. テストをする
  5. インストール、

時間を節約するために、私はdebianまたはFedoraまたは他の配布から静的バイナリを作成するソリューションを探しています。LFSで試してみてください。それが正常に機能する場合、または私の要件に従って、コンパイルにはソースコードを使います。

14
SHW

Fdiskが単なる例であり、目標が動的実行可能ファイルから静的実行可能ファイルを作成することである場合は、 Elf statifier を試してください。 Ermineとの比較もあります(Ermineベンダーによるので、(非)空の警告) です。ご了承ください

  • 多くの実行可能ファイルがある場合、それらの合計サイズは、動的にリンクされた実行可能ファイルと必要な動的ライブラリの合計サイズよりも大きくなる可能性があります。
  • GNU libcには、静的にリンクされた実行可能ファイルでは機能しない可能性がある機能があります。たとえば [〜#〜] nss [〜#〜] (ユーザー名のデータベース、ホスト名前など)およびロケール関連の機能。

システムツールの小さなポータブルスイートを作成することが目標である場合は、組み込みシステム向けのコアツールスイートである BusyBox を探します( fdiskを含む) )。 dietlibcµClibc のように、Glibcよりも小さな標準ライブラリに興味があるかもしれません。

うーん...これは非常に悪い考えのように見えます。しかし、それは可能です。

Fdiskはオープンソースなので、そのソースを入手してMakefileを見てください。コンパイル時に「-static」をgccに渡すオプションを見つける必要があります。

私はC/C++の第一人者ではありませんが、私が知る限り、既存の動的にリンクされたバイナリから静的にリンクされたバイナリを作成することはできません。

どこでも使用したい場合は、数秒以内に起動してすべてを変更できる小さなメンテナンスディストリビューションを使用することをお勧めします。

Linux/UNIXのインストールを実行しているディスクを変更したいと思うので、それは私にとってより感覚的になります。

0
tiktak