• ベストアンサー

WindowsでコンパイルできるがUNIXではできない

下記のプログラムは、2^-0.94を計算するものです。 このプログラムはwindows2000のマシンでコンパイルできるのですが、UNIXのマシンだと Unresolved text symbol "pow" というエラーがでてコンパイルできません。 UNIXのマシンは「cc ファイル名」でコンパイルを実行します。 どうすればコンパイルできるようになるのでしょうか。お手数ですが、教えてください。よろしくお願いします。 ※windows2000マシンのコンパイラ:Borland C++ Compiler 5.5 #include <stdio.h> #include <math.h> int main() { int a; double b,c; a=2; b=-0.94; c=pow(a,b); printf("%lf\n",c); return 0; }

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

  • ベストアンサー
回答No.1

コンパイルする際に  cc hoge.c -lm でどうでしょう? powコマンドはmath.h内に定義されており、 これをリンクしてコンパイルする際には-lmオプションが必要だったかと思われます。

eliteyoshi
質問者

お礼

ご回答ありがとうございます。 おかげさまで無事にコンパイルできました。

その他の回答 (1)

  • ballville
  • ベストアンサー率47% (233/487)
回答No.2

コンパイラがgccなら、 -lm  オプション付きでコンパイルしてください。

eliteyoshi
質問者

お礼

ご回答ありがとうございます。 おかげさまで無事にコンパイルできました。 オプションが必要とは知りませんでした。まだ勉強不足ですね。

関連するQ&A

  • コンパイルエラー

    本日からC++を勉強しはじめました。 使用しているコンパイラはBORLAND C++ COMPILER 5.5 です。 #include<iostream> int main(){ cout<<"hello"; return 0; } 上記をコンパイルすると下記のエラーが出ます。 いったいどこがいけないのでしょうか。 どなたか教えてくださいませ。 Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland 123.c: 致命的エラー F1003 C:\BORLAND\BCC55\include\stdcomp.h 5: error 指令: Must use C++ for STDCOMP.H *** 1 errors in Compile *** *** コンパイル終了 ***

  • Borland C++ Compiler 5.5の警告について

    Borland C++ Compiler 5.5を使用してコンパイルしているのですが、 下記のソースをコンパイルするとエラーがでます。 #include <stdio.h> ------test.c------ int main(void) { int a; int b=0; b = a; return 0; } 警告 W8004 error.c 6: 'b' に代入した値は使われていない(関数 main )という警告なのですが、初期化をしている変数すべての警告がでてしまい困っています。 この警告だけを表示させない方法等あるのでしょうか?

  • 一番最初でつまずいてます!!

    Borland C++Compilerをインストールしてプログラミングの勉強をし始めたばかりです。 #include<stdio.h> int main(void) { printf("はじめてのC言語プログラム"); return 0; } と入力してコンパイルすると 「インクルードファイル'stdio.h'をオープンできない」 というエラーがでました。 何度も見直したし、環境変数も合わせてるのになぜでしょうか!?

  • 簡単なコンパイルができない。

    ごく簡単なコンパイルができません・・。 #include<stdio.h> int main(){ int i; i = 1; printf("%d" , i); return(0); } でコンパイルすると Borland C++ 5.5.1 for Win32 Copyright (c) 1993,2000 Borland C:\TM-C\c\sam.c: 警告 W8065 C:\TM-C\c\sam.c 5:プロトタイプ宣言のない関数'printf'の呼び出し(関数 main) Turbo Incremental link 5.00 Copyright (c) 1997,2000 Borland Fatal: ファイル C0X32.PBJ が開けません と表示されてコンパイルできません・・。 プロトタイプ宣言ってこの場合いらないんじゃ・・。 どなたか教えてください:;

  • Borland C++ Compiler で winbase.h を使えないのですが・・・

    Borland C++ Compiler を使っているのですが,winbase.h 自体が使用できません。 次のようなプログラムでもコンパイルが通りません。 #include <winbase.h> int main(void){ return 0; } エラーは以下の通りです。 *** コンパイル開始 *** Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland ########.c: エラー E2139 C:\borland\bcc55\Include\winbase.h 227: 宣言に ; がない エラー E2238 C:\borland\bcc55\Include\winbase.h 228: 'ULONG_PTR' の宣言が複数見つかった エラー E2344 C:\borland\bcc55\Include\winbase.h 227: 一つ前の 'ULONG_PTR' の定義位置 (中略) エラー E2228 C:\borland\bcc55\Include\winbase.h 263: エラーあるいは警告が多すぎる *** 26 errors in Compile *** *** コンパイル終了 *** どうすればよいでしょうか? 何かちょっとした情報でもお願いします。

  • bcpadでコンパイルできない

    この前学校でbcpadをつかった授業があったので家でやってみようと思い、 Borland C++ Compiler 5.5 とCPad for Borland C++Compiler をインストールして設定もしました。 そしてbcpadに #include<stdio.h> int main(void){ printf("Hello World"); return 0; } と入力し、保存してコンパイルしてみました。 しかし、以下のようなエラーメッセージが出ました。 「コンパイルに失敗しました ファイル"C:Users\aaaa\downloads\Documents\C\hello.exe" は存在しません」 また下のメッセージのところには hello.cpp: Error E2379 hello.cpp 7: Statement missing ; in function main() *** 1 errors in Compile *** と出ていました。 何がダメなのか全くわかりません。 OSはwindows7です。 どなたか詳しい方ご教授をお願いします。

  • borlandについて

    こんばんは Borland C++ Compiler 5.5 を使っているのですが… _______________ |#include <stdio.h>      |←のようなプログラムをコンパイル |               | したら |int main(void) |1:インクルードファイル'stdio.h'を |{              | オープン出来ない | printf("Hello.\n");   |5:プロントタイプ宣言のない関数 | return 0;        | 'printf'の呼び出し(関数mein) |}              |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ と出てきますどうしたらよいでしょうか。

  • Borland C++ Compiler 5.5でland関数がコンパイルできません

    初歩的な質問ですみません。C言語のプログラミングの質問です。 タイトルどおり、Borland C++ Compiler 5.5でland関数がコンパイルできません。OSはWindows XPで、「c言語を始めよう!」を使ってプログラムを作っています。 今まで学校でunixを使っていたので、その時は何の設定もせずに使えたので普通に使ったのですが、”プロトタイプ宣言のない関数 'rand' の呼び出し”や”プロトタイプ宣言のない関数 'srand' の呼び出し”というエラーが出ます。 timeを使うために#include <time.h>が必要だったり、そのようなunixでは不必要だった下準備が必要なのでしょうか?

  • コンパイルの仕方が分かりません。

    とあるC言語で書かれたプログラムのコンパイルをしたいと思っているのですが、うまくいかないので質問させて頂きました。 環境はwindowsです コンパイラは bcc developer という Borland C++ Compiler をGUIで使える簡易IDEを使っているので Borland C++ Compilerと考えてください。VC++での方法でも大丈夫です コンパイルの仕方を検索するとハローワールドレベルのプログラムのコンパイル方法ばかりがでてきてしまいます。ですが、私がしようとしているのはオープンソースの他の方が書かれたものをダウンロードしてきてコンパイルするということなのです。 main関数が存在するファイルを発見し、「ここから全てのファイルがincludeされているんだろうからこれ一つをプロジェクトに加えてコンパイルすればいいのだろう」と考えてコンパイルすると関数の未定義エラーが大量に発生しました。 かといって全てのファイルをプロジェクトに追加するとなると量がとても多いのでかなり大変そうです。大変なのはいいのですが本当に皆さんがそんな方法でやっているのかも分からないし、それでやってもうまくいかないような気がします。 win32APIを使用している部分があったのでwinwosアプリケーションモードでコンパイルしてもやはりダメです。そもそも未定義エラーが出ているのはそれとは関係のないと思われる関数です。 調べてみるとインクルードパスに追加して・・などという記述をインターネットで発見したのですがこの辺りもよく分かりません。 とにかく、ディレクトリ階層が複雑になっている規模のおおきなプログラムのコンパイルの手順が分からないのでこのあたりについてお教え頂きたいです。 よろしくお願いします。

  • 「utime.h が見つからない」エラーにはどう対処? Boland C v5.5無料版 on win2000 DOS窓

    ある上手な人が書いた、Cソース一式があります。便利なCソースなので手を加えてコンパイル・リンクしたいです。内容はある科学dataの変換プログラムです。*.cファイルが15個ぐらい、*.hが4個ぐらい。全体でざっくり1000行ほどあります。 手元に、無料版Borland C v5.5 があります。Windows2000で、コンパイル・リンクをWindows2000のDOS窓で、試みました。が、「utime.h が見つからない」エラーになります。他のincludeファイルはうまく取り込まれています。事実、*.hファイルがある include/sys を見てみると、確かに、include/sys/utime.h は存在しません。(time.hなど4つのファイルが存在していましたが)。。。 こういう場合、どうしたら良いでしょうか?研究室のどこかに転がっているUNIXマシンから、include/sys/utime.h をコピーしてきて、windows2000の中で、上記Borland C v5.5 のinstallされたdirのinclude/sysに、さりげなく、copyしておけば、その後、コンパイルリンクはOKになるという、そういう簡単な話なのでしょうか? それともこのcopyは何か問題がありそうでしょうか。それともぜんぜん検討違いでしょうか。 どこかに転がっているUNIXマシンの前に座りなおして、そこで開発するというのはできれば避けたいです。 どうかよろしくお願い致します。

専門家に質問してみよう