- ベストアンサー
printfなど、標準関数のソースコードが知りたい
C言語、Linux初心者です。 タイトルの通り、printf, scanfなどの関数のソースコードや、main関数の呼出し部分のソースコードを見てみたいのですが、どこにあるのでしょうか。類似質問で http://www.gnu.org/home.ja.html から探せるとの回答がありましたが、出来ればもう少し具体的にお願いします。 RedHat Linux 7.3、gcc version 2.96を使っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Linuxで用いられる「GNU Cライブラリ」(libc、glibc)はこちらです。http://www.gnu.org/software/libc/libc.html http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/?cvsroot=glibc 例えばprintfは、この中の「stdio」という部分に含まれます。 http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/stdio/Attic/?cvsroot=glibc リストの中の改訂番号(Rev.)をクリックすればソースが見られます。 mainの呼び出し部分については残念ながら詳しくありません。
その他の回答 (2)
- taknt
- ベストアンサー率19% (1556/7783)
プログラムの中で printf などと使われた場合、 コンパイラが処理して 機械語に変換します。 その変換された アセンブラが 知りたいということなのでしょうか? それとも、コンパイラが 変換するところのソースが見たいというのでしょうか?
補足
ソースの方です。この質問で聞かれていたものです。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=467057 見ても自分には理解できないと思いますが、こういう基本的な部分を見ておかないと安心できないたちなもので。
- taknt
- ベストアンサー率19% (1556/7783)
質問にかかれているHPから 参考URLのHPにいけました。 参考URLにある Source tarballの sh-utils-2.0.tar.gz というファイルをDLして解凍してみると src というフォルダに printf.c というファイルが ありました。 これのことなのかな? あ、scanfは そこには なかったですね。 んで scanfを検索すると http://www.gnu.org/directory/libbinio.html と出ました。 なお検索するのは http://www.gnu.org/directory/GNU/ で します。
補足
回答ありがとうございます。このprintfはシェルコマンドのほうのprintf(man 1 printfでマニュアルが出てくるほう)で、関数ではないようです。scanfのほうもちょっと見た限り違うようです。
お礼
これです!なかなか見つけられなくて…。ありがとうございました。mainの呼出し部分については少し待って回答がないようであれば、別質問にするかも知れません。