• ベストアンサー

ユーザコマンド(1)やライブラリ(3)のソースコードはどこ?

どのUNIX系OSにも見られるgrep(1)等のユーザコマンドや /lib, /usr/lib等にあるライブラリのソースコードは どこで手に入るのでしょうか? システムコール(2)のソースコードは全部/usr/src(linuxの場合)の 中に入っていると考えて良いのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • MarrowG
  • ベストアンサー率53% (41/76)
回答No.3

fileutilsやfindutilsなど、*utilsのファイルはご覧になりましたか? lsなどの小物は他の小物とカテゴリ毎に一纏めになっています。 ちなみにlsやcp,chmodなどはfileutilsに入っていますよ。

heather
質問者

お礼

ありました、ありました! 関連ライブラリのソースも。ありがとうございました。

その他の回答 (2)

  • MarrowG
  • ベストアンサー率53% (41/76)
回答No.2

linuxの場合ですが…。 ユーザーコマンドはほとんどがGNUからリリースされているものです。 ftp://ftp.iij.ad.jp/pub/GNU にごろごろ転がっています。(^^; またいわゆるC標準ライブラリもGNUモノです。 GNU libcといわれるのがそれです。

heather
質問者

補足

grep(1)はありました(^^ でもls(1)とかdate(1)がない...(;_; しばらく探し回ってみます...

  • h_hikita
  • ベストアンサー率40% (104/257)
回答No.1

「どのUNIX系OS」かによってどこで手に入るかが違ってくるかと思います。(^_^;; □BSD系場合 /usr/src以下に標準インストールされるもののソースがおかれます (ソースコードのインストールを選択した場合)。 システムコールのソースは、呼び出しのルーチンがlibcあたりに入っていた と記憶しています。処理の実体は、カーネルの中なので/usr/src/sys以下に あります。 □linux RPM系場合 ソースコードのRPMを展開すると /usr/src/ディストリビューション名/以下に ソースがおかれます。 システムコールのソースは、/usr/src/linux以下にあります。 呼び出し側は /usr/src/DIST名/BUILD 以下かな...ちょっと今 確認できないので自信はないです。

heather
質問者

補足

で、結局grep(1)等のユーザコマンド、isdigit(3)等のライブラリは どこにあるんでしょうか...(^^; linuxのディストリビュータはそれらをどうやって 手に入れてるんでしょうねぇ。

関連するQ&A

  • PATHとLD_LIBRARY_PATHの設定

    solarisまたはlinuxで、ソースインストールする際のPATHとLD_LIBRARY_PATHについての質問です。 1. ソースインストールする際に、事前にPATHやLD_LIBRARY_PATHを設定してから、 ./configure → make をするよう説明しているサイトがありますが、 インストールするときだけPATHやLD_LIBRARY_PATHを変更しても問題ないのでしょうか? たとえば、インストール時に$ export LD_LIBRARY_PATH=/lib:/usr/libとしてインストールしたけど、 実際にサービスを起動する際はLD_LIBRARY_PATHは未設定というような状態のことです。 2. ソースインストールする際、./configureとmakeを実行する一般ユーザのPATHやLD_LIBRARY_PATHの示すパスと、 make installを実行するrootユーザのPATHやLD_LIBRARY_PATHの示すパス(または順番)が異なっていても大丈夫でしょうか? たとえば、一般ユーザはLD_LIBRARY_PATH=/lib:/usr/libだけど、 rootユーザはLD_LIBRARY_PATH=/usr/local/lib:/lib というような状態のことです。 3. exportなどによる一時的な設定ではなく、profieや/etc/ld.so.conf(solarisではcrleによる)などで 固定で設定する場合、注意することはありますか? 個人的に思っているのは、パスの先頭に追加すると既存サービスなどに影響を与える可能性があるので、 最後尾に追加していくことぐらいです。 以上です。よろしくお願いします。

  • Linuxのソースコード

    www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.2.tar.bz2 ここでLinuxのソースコードが手に入るのですが、解凍するときに同じファイル名が存在しますと出てしまいます。(ただ、ファイル名は同じでも中のソースコードは違うみたいです)これは正常な状態なのでしょうか?ファイル名を変えて保存しても大丈夫ですか? 後、Linuxとはこのわずか250MB程度のソースコードで出来ているのですか?ITProの記事でLinuxのソースコードを全部読んでいる人はほとんどいないという記事を見たのですが、OSのソースコードとはそんなに難しいものなのでしょうか? 後、Linuxって現在どれぐらい使えるものなのでしょうか?やはりWindowsにとってかわるというのは無理な話なのでしょうかね? 初心者丸出しですいません・・・

  • スタティックライブラリの使い方

    Linuxで使えるCのライブラリを落としてきたのですが、使ったことがないので戸惑っています。 パッケージは、makefile , .c , .h の3つで、makeするのはできました。で、ライブラリ.a が出力されまして、このファイルを使え!と説明書にはあるのですが、この先がよくわかりません。 とりあえず、出力されたライブラリを/usr/lib あたりに入れて、自作のプログラムで先ほどのライブラリのヘッダをインクロードするところまではできたのですが・・・。 コンパイルすると、/usr/bin/ld: cannot find -ライブラリ と出てしまいます。教えていただけますでしょうか。

  • 文字列検索(grepのようなもの)のCソースコード知りませんか?

    Cソースコードを探しています。文字列検索用のコードです。UNIXのgrepみたなことができればと思います。 ご存知でしたら教えてください。お願いします。

  • ソースコードを読む

    ソースコードを読むことは大切だ、という事を良く聞きますが、どんなソフトウエアのソースを読めば良いのでしょうか??また、何処から入手できるのでしょうか? いきなり、数千行のソフトは到底読めないので100~200行くらいから始めたいのですが、お勧めなどはあるでしょうか? UNIXのコマンドのソースはcatとechoが限界でした^^; C言語の知識は一通り勉強して、書く方なら500行くらいまではかけるようになったのですが、ソースを読む機会というものが無いので、どうしたら良いのか困っています。アドバイスお願いします。

  • 特定のライブラリを参照しているか調べる方法

    ソースからビルドしたあるコマンドが共有ライブラリ(/usr/local/lib)にある特定のsoファイルやlaファイルを参照できていないのではという疑念があります。ビルドしたコマンドが参照しているか調べる方法(コマンド)があるらしいのですがどういうコマンドを打てばよいでしょうか。下記であってますでしょうか。その場合、どのような見方をすればよいでしょうか。 readelf -a `which コマンド名`

  • gtkに関する質問

    GTKというライブラリで、ソースを書いてコンパイルした所 数え切れない程のエラーがでてしまう(実際のソースコードは10行未満)インクルードファイルに色々構文エラーがあるみたいですが、リンクに指定するライブラリを間違えたのでしょうか。 もし間違えたのならどのライブラリとリンクすれば良いのか教えてください。(これかなと思うライブラリを色々リンクしてみましたが無理でした) ちなみに、コンパイルしたOSはLinuxでTurboLinuxというディストリビューションです。 そしてコンパイルに使ったコマンドは下記の様に書きました gcc -o GTK gtk.c -I /usr/include/gtk -lgtk -L /usr/lib

  • Linuxのソースコードはどこで手に入れるのですか?

    Linuxについてはかなりの初心者ですが、Linuxはオープンソースですよね。そのソースコードはどうやって手に入れることができるのですか? あと入手できるソースコードとはLinuxのカーネル部分だけなのですか?それともWhite Box LinuxやUbuntu、Fedoraなどのディストリビューションのソースコードを手に入れることもできるのですか? また、それを変更してパッケージとして販売することはできるのですか? どなたか教えてください。

  • 優れたソースコードを読みたい(初級~中級)

    優れたソースコードを読んでみたいんですけど、なにかいいwebサイトや書籍はないでしょうか?自分が書籍でよさそうだなあと思ったのは、「UNIXコマンドのソースコードにみる実践プログラミング手法」や「Code Reading」です。 ここいいぞ、とかこの本いいぞ、とかあればぜひ教えてほしいです。

  • gccの「-l」オプションとライブラリの関係

    gcc の -l オプションってどのような動作なのでしょうか?? sendmail関係の少々実験的な開発をするために、 OSに標準で入っているsendmail関係のライブラリである、   /usr/lib/libmilter.a   /usr/lib/libmilter.so   /usr/lib/libmilter.so.3 を削除して、 sendmailをソースからコンパイルして、 sendmailのソースの中のlibmilterもコンパイルしました。 この時点で、libmilter.a は、コンパイルしたディレクトリ(/usr/local/src/sendmail-8.14.2/)の下の   /usr/local/src/sendmail-8.14.2/obj.FreeBSD.6.2-RELEASE.i386/libmilter/ の中にしか存在しないのですが・・・ gcc -pthread -lc_r \   -L/usr/local/src/sendmail-8.14.2/obj.FreeBSD.6.2-RELEASE.i386/libmilter/ \   -lmilter \   test.c としてコンパイルしようとすると、libmilter の中にある関数が、 ことごとく「undefined reference」になってしまいます。 これを、-L や -lオプションでライブラリを探させるのをやめて、明示的に gcc -pthread -lc_r \   test.c \   /usr/local/src/sendmail-8.14.2/obj.FreeBSD.6.2-RELEASE.i386/libmilter/libmilter.a と書くと、問題なくコンパイル&リンクできるのですが・・・ なぜなのでしょうか??