3

自動的に再コンパイルされるファイルをディスクに書き込もうとしています。残念ながら、sth は動作していないようで、まだ理解できないエラー メッセージが表示されます (私は C の初心者です :-)。生成された hello.c を手動でコンパイルすると、すべて動作しますか?!

#include <stdio.h>
#include <string.h>

    int main()
    {
        FILE *myFile;
        myFile = fopen("hello.c", "w");
        char * text = 
        "#include <stdio.h>\n"
        "int main()\n{\n"
        "printf(\"Hello World!\\n\");\n"
        "return 0;\n}";
        system("cc hello.c -o hello");
        fwrite(text, 1, strlen(text), myFile);  
        fclose(myFile);
        return 0;
    }

これは私が得るエラーです:

/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o: 関数_start': (.text+0x20): undefined reference tomain で collect2: ld が 1 つの終了ステータスを返しました

4

3 に答える 3

6

これは、プログラムのソース コードをファイルに書き込む前にsystem、ファイルをコンパイルするために呼び出しているためです。そして、その時点で、あなたは空のファイルであるため、リンカは当然のことながら、関数が含まれていないと不平を言っています。hello.cmain

変更してみてください:

system("cc hello.c -o hello");
fwrite(text, 1, strlen(text), myFile);  
fclose(myFile);

に:

fwrite(text, 1, strlen(text), myFile);  
fclose(myFile);
system("cc hello.c -o hello");
于 2011-04-16T13:33:05.673 に答える
0

システムを呼び出してファイルをコンパイルする前に、まずファイルを書き込んでファイルを閉じるべきではありませんか? これはあなたの問題だと思います。

于 2011-04-16T13:34:39.620 に答える
0

ファイルを書き込む前にファイルをコンパイルしようとしていますか?

于 2011-04-16T13:33:23.363 に答える