2011-01-22 6 views
3

私は、bashで些細なことはしたいが、バイナリが必要な/外部の依存関係がゼロであるようなものをいくつかやってみたいプロジェクトがある。だから、には、自分自身の中にあるもののようなbashを実行できるように、自己完結型のlib(つまり、システム()のラッパーではない)を書いた人がいますか?手オフC libとしてのBash?

、私は必要なことを期待するものがあります:cprmwgettftpartar、​​多分dpkgが、私はその1つのステップサイドことができると思います。コメントに答えるために


:私は静的にリンクされたビジーボックスの線に沿って何かを探しているが、私はそれのためのプログラムとしてシェルファイルを必要としているもの、私はしませんしませんよ自動的にリンクされても使用されません。

+1

これらのほとんどは、bashの外部依存関係です。これらの実行可能ファイルがすべてlibに組み込まれた単一のライブラリが必要ですか? –

+1

なぜ 'system(" cp ... ")'を呼び出さないのですか? (私はあなたがLinux上にいると仮定していますが、これはWindowsではまったく異なる質問です...) – Mehrdad

+0

なぜsystem()を使用できませんか?これらはすべて外部実行ファイルなので、 "bashをCライブラリとして"使用することは、依存関係をゼロにするのに役立ちません。 –

答えて

6

busyboxが必要です。

+0

私はそれで生きることができましたが、むしろそうするでしょう。私の編集を参照してください。 – BCS

2

私はBusyboxと完全に同意します。さらに、dpkgのソースコードを入手すれば、ほとんどの機能にアクセスすることができるfind a small library insideになります。

1

あなたは多くのカスタム要件を持っています。あなたが言うように、私が使っていないものはリンクしていないと思っていないので、やる必要があります多くの手でハッキングしています。

あなたがオブジェクト・ファイルにすべての外部依存関係をコンパイルする場合は、あなた独自のツールにしてそれらをリンクすることができるはずです(名前空間の衝突を想定していない、あなたが注意している場合、あまりにも悪い、大きな仮定ではなく)、彼らのmain()機能を消耗すればできるはずです。

実際、依存関係については、main()の名前を変更して、自分でコマンドラインから呼び出しているかのように、argc/argvをパッキングして利用できるようにすることもできます個々の関数を自分で呼び出すのではなく、むしろオーバーヘッドがあります。

前述busyboxが既にdpkg以外(でもtarwget)必要なすべての機能を提供しています、とlibがそのために既に存在だから、私はあなたがあなたの方法にもいると思います。

+0

私は、誰かがあなたが今説明したことを多かれ少なかれ正確に行ってから、それをlibとして梱包してくれることを望んでいました。 – BCS

関連する問題