• ベストアンサー

Mac OSX10.3Cc言語

salsberryの回答

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

私の環境はPowerPC G4 + Mac OS X 10.4.11なので、質問者さんの環境と同じではない可能性もありますが… 実行ファイルのリンク時にはcrt1.oというファイルが必要なのですが、/usr/libにありますか? $ ls -l /usr/lib/crt1.o -r--r--r-- 1 root wheel 20394 May 27 2005 /usr/lib/crt1.o あとは、コマンドラインでgccを実行するときに-vオプションを指定してみてください。gccが内部で実行しているコマンドの様子が詳しく表示されます。"can't locote file for; -lcrt1.o"が出る直前におそらくcollect2が実行されていることが分かると思うのですが、その表示がどうなっているかを教えてください。 下記は、私の環境でわざと/usr/lib/crt1.oをリネームして試してみたものです。collect2は、-Lで指定されたディレクトリの中からcrt1.oを探そうとします。 $ gcc -v test.c …中略… /usr/libexec/gcc/powerpc-apple-darwin8/4.0.0/collect2 -dynamic -arch ppc -weak_reference_mismatches non-weak -o a.out -lcrt1.o /usr/lib/gcc/powerpc-apple-darwin8/4.0.0/crt2.o -L/usr/lib/gcc/powerpc-apple-darwin8/4.0.0 -L/usr/lib/gcc/powerpc-apple-darwin8/4.0.0 -L/usr/lib/gcc/powerpc-apple-darwin8/4.0.0/../../.. /var/tmp//ccuFraeR.o -lgcc -lgcc_eh -lSystemStubs -lmx -lSystem /usr/bin/ld: can't locate file for: -lcrt1.o

mexohanaxo
質問者

お礼

回答、ありがとうございます。 いっぱい出てきたので分かりません。

mexohanaxo
質問者

補足

no-name:~ nameno$ gcc -v hello.c Reading specs from /usr/libexec/gcc/darwin/ppc/3.3/specs Thread model: posix gcc version 3.3 20030304 (Apple Computer, Inc. build 1495) /usr/libexec/gcc/darwin/ppc/3.3/cc1 -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=0 -D__APPLE_CC__=1495 -D__DYNAMIC__ hello.c -fPIC -quiet -dumpbase hello.c -auxbase hello -version -o /var/tmp//ccxb6QkL.s GNU C version 3.3 20030304 (Apple Computer, Inc. build 1495) (ppc-darwin) compiled by GNU C version 3.3 20030304 (Apple Computer, Inc. build 1495). GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/usr/local/include" ignoring nonexistent directory "/usr/ppc-darwin/include" ignoring nonexistent directory "/Local/Library/Frameworks" #include "..." search starts here: #include <...> search starts here: /usr/include/gcc/darwin/3.3 /usr/include End of search list. Framework search starts here: /System/Library/Frameworks /Library/Frameworks End of framework search list. /usr/libexec/gcc/darwin/ppc/as -arch ppc -o /var/tmp//ccq5vZCw.o /var/tmp//ccxb6QkL.s ld -arch ppc -dynamic -o a.out -lcrt1.o -lcrt2.o -L/usr/lib/gcc/darwin/3.3 -L/usr/lib/gcc/darwin -L/usr/libexec/gcc/darwin/ppc/3.3/../../.. /var/tmp//ccq5vZCw.o -lgcc -lSystem |

関連するQ&A

  • Macでテキストエディットを用いたC言語

    Macでテキストエディットを用いてC言語プログラミングをしました。hello.cを作りました。 #include<stdio.h> int main(void){ printf(“HelloWorld¥n”); return 0; } この上がソースコードです。そしてターミナルでコンパイルして実行したら以下のようなメッセージが出ました。どこが間違っているのでしょうか? gcc -o main hello.c hello.c:4:10: error: non-ASCII characters are not allowed outside of literals and identifiers printf(“HelloWorld¥n”); ^ hello.c:4:23: error: non-ASCII characters are not allowed outside of literals and identifiers printf(“HelloWorld¥n”); ^ hello.c:4:13: error: use of undeclared identifier 'HelloWorld' printf(“HelloWorld¥n”); ^ hello.c:4:26: error: non-ASCII characters are not allowed outside of literals and identifiers printf(“HelloWorld¥n”); ^ 4 errors generated.

  • macでC言語を勉強してみていて、やはり分からなく

    機械には弱いのに、興味でCを勉強して見ています。 昨日、「macでc言語を勉強しているのですが」という題で質問をしました。これは #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; double d; long l; i = atoi(argv[1]); l = atol(argv[2]); d = atof(argv[3]); printf("%d %ld %f", i, l, d); return 0; } という、「独習C」と言う本の例題のプログラムについて、コマンドラインからの入力をできるようにどうすればいいのかわからない。というものでした。これについて、sevenlessさんがとても丁寧に回答をしてくださったのですが、 「ターミナルを立ち上げて先ほどのプロジェクトをセーブしたディレクトリに移動し、さらにその中の build/Release ディレクトリに入ります。そうすると、そこに test という名前の UNIX 実行ファイルができているはずです。そこでターミナルで ./test 1 2 3 と打てば 1 2 3.000000 と実行結果が表示されるはずです」 という下りの部分が、僕がコンピュータに関して非常に疎い為に、ターミナルの扱いも分からず、ネットで調べて頑張ろうと思ったのですが、中々上手く必要な用法に達しません。本を買って学ぶのも冗長な気がするので、是非とも誰か教えてください。 一応、ターミナルで Macintosh:Release 名前$ と言う状態にしてみましたけれど・・・

    • ベストアンサー
    • Mac
  • C言語で直角三角形の斜辺を求めるプログラムについて

    「二辺の長さが与えられているとき、斜辺の長さを求めよ」という問題です。 #include <stdio.h> #include <math.h> #define a 3 #define b 4 int main (void) { double c=0; c=sqrt(a*a+b*b); printf("%f",c); return 0; } visual2010c++で作ったんですが、sqrtに下線がついて、コンパイルエラーしちゃいます。 すんごい初歩的なことなんだと思いますが、どこなのか気づけません。 どなたかよろしくお願いします。

  • C言語のファイル読み込みに関して。

    英文を入力したテキストファイルを読み込むプログラムをつくっているのですが、 ファイル読み込みが上手くできません。 #include<stdio.h> main() { char filename[33]; char sty[512]; FILE *fp; printf("FILENAME: "); fgets(filename, 33, stdin); //読み込むテキストファイルを指定 fp = fopen(filename,"r"); if(fp == NULL){ printf("Can't open the file!\n"); return -1; } fgets(sty, 512, fp); fclose(fp); printf("%s\n",sty); } このプログラムなのですが、どうしても"Can't open the file!"が表示されてしまいます。 どうすればいいのでしょうか?

  • Visual Stadio でのC言語ですが

    すごい初歩的な質問で申し訳ないのですが 画面にabcdeと表示させるときに通常のコンパイラーだと getchar();と入れなくてもいいのですが VisualStdioだと、これを入れないとコンソール表示をしてくれません。 どうしてなのでしょうか? 決まりといわれてしまえばそれまでなのですが・・・ #include<stdio.h> int main(void) { printf("abcde\n"); getchar(); return 0; }

  • BCC Developerについて。

    Borland C++ Compiler、BCC Developerを使って #include <stdio.h> void main(){ printf("Hello C world.\n"); } をメイクしてみたのですが、 インクルードファイル 'stdio.h' をオープンできない 、と表示されコンパイルできませんでした。 環境設定は、コンパイラにbbc32.exeを指定すればいいだけなんでしょうか?よろしくお願いします。

  • C言語でいきなりつまづいてます。

    C言語でいきなりつまづいてます。 何がダメなのかご教授ください。 OSはウインドウズXPです。 (1)Borland C++ Compiler 5.5 With Command Line Tools Version 5.5.1をインストールしました。 (2)BCC5.5.1 環境ファイルパス設定プログラムをインストールしました。 (3)以下のソースを書きました。 #include <stdio.h> int main(void) { printf("Hello, \nworld"); return 0; } (4)hello.cというファイル名で保存しました。 (5)コマンドプロンプトでフォルダを(4)のファイルが置いてあるフォルダに指定し bcc32 hello.cと入力しました。 (6)出力が   hello.c になります。 エラーなどはありません。 以上です。 よろしくお願いします。

  • C言語

    最近C言語を始めたばかりなのですが、コンパイラをしたあと、オブジェクトファイルをexeしようとすると、エラーがでます。 そのエラーとは ”問題が発生したため、error.exe を終了します。 ご不便をおかけして申し訳ありません。この問題を Microsoft に報告してください。”です。 どなたかわかる方教えてください。 以下が、問題のプログラムです。 #include <stdio.h> int main(void) { int na; puts("身長を入力してください。"); printf("身長:"); scanf("%d",&na); printf("標準体重は[%.1f]です。%n", (double)(na - 100) * 0.9); return(0); }

  • C言語の配列について

    配列を20 定義し値を入力して合計値を出したいのですがどうすればよいのでしょうか 下のソースでエラーはおこりませんでした 何がちがうのでしょうか #include <stdio.h> int main() { int a[20]={}; int i, sum; printf("整数を入力してください:"); scanf("%d",&a); printf("\n"); for (i = 0; i < 10; i++) { sum += a[i]; } printf("sum= %d\n", sum); return 0; }

  • C言語について

    #include <stdio.h> struct syoukai{ int no; char name[5]; }; int main(void) { struct syoukai mine = {3, "aaaaa"}; int cmdID ; printf("コマンドを入力してください\n"); scanf("%d\n",cmdID); if(cmdID == 1) printf("%d\n",syoukai.no, syoukai.name); } これをコンパイルして実行すると Segmentation fault とエラーになってしまい原因がわかりません 教えていただけますか?