• ベストアンサー

Linuxで、標準Cライブラリが読み込まれず、C言語プログラミングができません・・・

僕の問題はタイトルの通りで、標準Cライブラリが読み込まれていないようで、C言語プログラミングができません。 ubuntuのオフィシャルから日本語ローカライズドDesktopCDをダウンロードして、空のHDDにインストールしました。 ですが、gnome-terminalからccコマンドでプログラムをコンパイルしても、標準Cライブラリにあるはずの<stdio.h>が認識されず、続くprinft関数も読んでくれません。 これはどうしてでしょうか?LinuxはデフォルトでCやらJAVAやらのプログラミングの環境が整っているものだと思っていたので、戸惑っています。何か、セットアップが必要なのでしょうか。 ちなみに、gccでも、標準ライブラリは読み込まれませんでした。

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

  • ベストアンサー
  • adkori
  • ベストアンサー率31% (221/705)
回答No.2

#1の方が答えていますが、ubuntuでは開発環境はデフォルトではインストールされません。 コマンドが使えるのでしたら $ sudo apt-get update $ sudo apt-get install build-essential で、 GUIでしたらsynapticを起動して「build-essential」を検索してインストールしてください。 これで標準のCの開発環境が整います。

emanon_
質問者

補足

回答有難うございます。 ですが・・・できませんでした。 orz $ sudo apt-get update $ sudo apt-get install build-essential を、両方ともやりました。 上は、出てきたパッケージをシラミ潰しに読みましたが、build-essentialという単語は発見できませんでした. 下は、「インストール候補のバージョンが見つかりません」 と、返されました. (関係あるでしょうか.パッケージアップデートは最新です.) 方法変えて、外からDLしてインストールを試みたのですが、それも失敗しました. コンソールで、 build-essential_11.4.tar.gzを解凍。 build-essential-11.4のフォルダ内で ./configure を実行しました. そしたら、↓ configure: error: The dpkg development files (dpkg-dev) must be installed to build this package. と返ってきました. で、dpkg-devをインストールすべく、それをDLし、 手順は同様、最後に ./configure を実行したら、それもダメでした. それに関しては、何が悪いのかよくわかりませんでした. もう挫けそうです…(笑) 下の「no」は、それが足りていないってことなのでしょうか。 長くなりますが、その時のコンソールの返事を載せておきます. checking build system type... i686-pc-linux-gnulibc1 checking host system type... i686-pc-linux-gnulibc1 checking target system type... i686-pc-linux-gnulibc1 checking dpkg cpu type... i386 checking dpkg operating system type... linux checking dpkg architecture name... i386 checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether NLS is requested... yes checking for msgfmt... no checking for gmsgfmt... : checking for xgettext... no checking for msgmerge... no checking for style of include used by make... GNU checking for gcc... gcc checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details.

その他の回答 (2)

  • cynthia4
  • ベストアンサー率51% (186/358)
回答No.3

「昨日より http://jp.archive.ubuntu.com/ のリポジトリがおかしくなっています。他のリポジトリを使用してください。」 ということらしいです。 http://forum.ubuntulinux.jp/viewtopic.php?id=2549

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

ubuntu自体は使ったこと無いですが、CやJavaの開発環境はデフォルトでインストールされるとは限りません。インストール時にパッケージの選択がおそらく出来ると思うので、その中でCやJavaの開発環境を選択しないといけません。サーバー系のディストリビューションだとデフォルトで選択されている可能性が高いですが、ubuntuはデスクトップ使用がメインだと思うので、デフォルトでない可能性があります。 インストール時にパッケージをカスタマイズせずに、/usr/include/stdio.h が無いのなら、パッケージ管理ツールでそれらしいものを追加インストールする必要があります。

emanon_
質問者

お礼

有難うございます。 そうですね、ディストリビューションによって設計思想が違うなら、入っていない可能性も十分ありますね. あと/フォルダにあるフォルダ群の役割がよくわからなかったのですが、それもすこしわかったような気がします。 勉強になりました. あらためて、有難うございます。

関連するQ&A

  • JavaでCプログラムをコンパイルするには

    linux環境で、javaによって別に作ってあるCのプログラムをコンパイルしたいのですが、execを使用して、 Runtime.getRuntime().exec("cc sample.c"); とするとコンパイルできません。 恐らくコマンドプロンプトなどを起動して指定してやればできると思うのですが、現在linux環境にないのでわかりません。 gnome-terminalかなにかだったような気がするのですが・・・。 どなたか教えていただければ幸いです。

  • LinuxとC言語

    Linux初心者です。LinuxとC言語についていくつか質問 させていただきます。 1.どんなリナックスにもgccは入っているのでしょうか? 2.Linuxには色んな種類のものがありますが、 全てのLinuxでコンパイルや動作は可能でしょうか? 宜しくお願いします。

  • Linuxにgccをインストールしたのですが・・・

    Linux(Debian Sarge)にgccをインストールしたのですが、 #include <stdio.h> int main(void) { printf("Hello World"); return 0; } のような1.cといったファイル名のプログラムを作成し、 cc -o 1 1.c と実行したのですが、 1.c:1:19: stdio.h : そのようなファイルやディレクトリ はありません と表示されコンパイルできません。恐らくライブラリが読み込まれていないまたはライブラリがインストールされていないために起こったと考えられるのですが、 どういった設定をすればいいのでしょうか?これまでは標準でインストールしただけで、全ての設定が完了していたのですが、今回は何故か設定ができていませんでしたので、手のつけられない状況です。 ご回答よろしくお願いします。

  • WindowsでのC と LinuxでのC の違いについて

    これから、Linux OSでC言語のプログラミングを行うことになりました。ディストリビューションはVine Linux 3.2 を利用します。 開発方法としては、Windows Xp 上でgccを利用できるIDE(Dev-C++ 4.9.9.2を利用します)で開発を行い(テスト的にコンパイル)、できたソースをLinux上でコンパイル・リンクするという方法で行おうと考えています。 そこで、疑問があります。 ANSIライブラリの中にはシステムコールを実行するものがあると思います。システムコールはOSの一部の機能ということですので、WindowsとLinuxとでは当然その機能は違ってくると思います。 つまり、WindowsでANSIライブラリを利用して実装したプログラム(コンパイルもとおる)がLinux上で正常に機能するのか(そもそもコンパイルがとおるか)がわかりません。 どなたかご教授いただけましたら幸いです。 宜しくお願いします。

  • C言語にはJavaのような豊富なライブラリはないんでしょうか?

    C言語にはJavaのような豊富なライブラリはないんでしょうか? JavaにはTreeSet, Vector, LinkedListなどの便利なライブラリがありますが、C言語にはこういったのはないのでしょうか?string.hやstdio.hなどはあるのは知っていますが、Javaほどライブラリにある関数が少ないと思いますが、どうなんでしょう?CでLinked Listを使いときなどは自分で書くしかないのでしょうか?

  • C言語で作ったらWindowsでもMacでもLinuxでも動くんですか?

    Linuxでgccを使ってC言語を勉強してます。 Linuxのgccでコンパイルして作ったプログラムはWindowsでもMacでも動くんでしょうか? 逆にWindowsで作ったのはとか、Macで作ったのは他のOSで動くんだろうかと疑問で・・・。 教えてください!!

  • MacでのC言語について

    MacでC言語の環境を作ろうと思いXcodeをインストールしたのですが、コンパイルができません。 取り敢えずhello.cを作り、ターミナルを起動してディレクトリを移動しgcc hello.cと入力したのですが「-bash: gcc: command not found」と表示されてしまいます。 OSはLionです。 プログラミング初心者なので説明不足かもしれませんが分かる方どうか教えて下さい。

  • Linuxでプログラミング

    Windows7でVirtualBoxを利用してLinuxを使っています。 そのLinuxでC言語のプログラムをgccでコンパイルしたのですが、 error: stdio.h:No such file or directory In function main': 警告:incompatible implicit declaration of built-in function printf' と表示されます。プログラムは以下のような内容です。 #include<stdio.h> int main(void) { printf("hello,world\n"); return 0; } なぜエラーになってしまうのか分かりません。どうしたらよいのでしょうか? 他に何か必要な情報があれば答えます。よろしくお願いします。

  • C言語からjavaを呼び出したい

    C言語からjavaを呼び出したいのでjniを使うことにしました。 各言語のソースはWebで見つけたサンプルを見ながら何とか作成し、各々コンパイルまで終わったのですが、javaのオブジェクト(?)をどこに置いたら良いのかさっぱりわかりません。 java使いの人達には常識の話だと思いますがjavaはサーブレットしか作ったことが無くどうしたものかと困っています。 分からないのは次の2点です。 1.classファイルのままでも良いのかjarにしないといけないのか? 2.どこに設置したら良いのか? これまでやったこと 1.javaのソースを作成しコンパイルしました(classファイルのままです) 2./etc/profileに次のコマンドを追加しました。 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/java/jdk1.7.0_03/jre/lib/amd64/server export LD_LIBRARY_PATH 3.C言語のソースを次のコマンドでコンパイルしました。 % gcc -I/usr/java/jdk1.7.0_03/include/ -I/usr/java/jdk1.7.0_03/include/linux -L/usr/java/jdk1.7.0_03/jre/lib/amd64/server -ljvm -lpthread jnitest.c -o jnitest 4.javaモジュールの設置←これがわかりません 初歩的な質問で申し訳ありませんがご教示下さい。

    • ベストアンサー
    • Java
  • LINUXでC言語のプログラミングについて

    私は、現在情報工学科の学生です。現在学校でLINUXの科目を受講しています。私は今まで、学校から出された課題は自分でやってきましたが、この問題だけはどうしても解けず、このような場を借りて、問題のプログラミングについて皆様にご教授をお願いしています。自分でいろいろ調べ、考えてみましたがそれでも自分の知識が足りず、プログラムを作ることができませんでした。プログラムと解説のご教授をお願いします。 OS Linux プログラミング言語 C言語 コンパイル方式 [gcc] *****問題***** #include <manにより調べること> void main(argc, char *argv[]){ int n, fd[2]; char line[MAXLINE]; pid_t pid; if (pipe(fd)<0) exit(1); if ((pid=fork())>0) { /*parent process */ close (fd[0]); write(fd[1], "Hello\n", 6); } else{ /*child process */ close (fd[1]); n = read(fd[0], line, MAXLINE); write (1, line, n);/* write(fileno(stdout), line,n); } else exit(1); /* fork error */ exit (0); } (問題1)上記をもとに親プロセスがキーボードから入力した行をパイプで子プロセスに標準出力ファイルとして送り、子プロセスは標準入力から受けとってスクリーンにエコーバックするようなプログラムを作れ。ヒント:dup2(fd[1],fileno(stdout)), fgets(line, MAXLINE, stdin), fputs(....) (親) (子) キーボード-->| stdin stdout| ---> |stdin stdout|---->ディスプレイ