• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:qmakeコマンド後のmakeでエラーが出る。)

qmakeコマンド後のmakeでエラーが出る

このQ&Aのポイント
  • Ubuntu LinuxのQtでhello worldをビルドしている際に、qmakeコマンド後のmakeでエラーが出力される状況です。
  • エラーメッセージによると、hello.proファイルの4行目と6行目に不明なテスト関数があり、パースエラーが発生しています。
  • このエラーを解決するためには、hello.proファイルの該当箇所を確認し、正しいQtの関数および条件文を記述する必要があります。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

とりあえず 「次のようなプログラムをテキストファイル"hello.pro"に記述して」 の時点で間違っているっぽいことは分かった.

techhouse
質問者

お礼

回答頂きありがとうございます。 今回の作業のファイルはこちらの内容でやっております。 https://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/2494/trunk/20140717/hello.cpp それで、hello.cppに変更して、 #qmake -project で”20140717.pro”を出力 #qmake #make この順で出力していったのですが、次のようなエラーが出て実行ファイルが出力できない状態です。 # make g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o hello.o hello.cpp make: g++: Command not found make: *** [hello.o] Error 127 この問題の解決方法を引き続きご教示頂きますよう、お願い致します。

techhouse
質問者

補足

回答頂きありがとうございます。お世話になっております。 C++のコンパイラがUbuntu Linuxに入っていないためエラーが起きていることがわかりました。インストール後ビルドできました。 大変助かりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • makeがエラーを吐く

    makeがエラーを吐く 今、Fedora13で無線LANのドライバ(RT2870)をインストールしているのですが・・・ makeを行うと下記のような表示で止まってしまいます # make make -C tools make[1]: ディレクトリ `/home/makoto/rt2870/tools' に入ります gcc -g bin2h.c -o bin2h make[1]: ディレクトリ `/home/makoto/rt2870/tools' から出ます /home/makoto/rt2870/tools/bin2h cp -f os/linux/Makefile.6 /home/makoto/rt2870/os/linux/Makefile make -C /lib/modules/2.6.33.3-85.fc13.i686/build SUBDIRS=/home/makoto/rt2870/os/linux modules make: *** /lib/modules/2.6.33.3-85.fc13.i686/build: そのようなファイルやディレクトリはありません. 中止. make: *** [LINUX] エラー 2 一応、カーネルソースなども一通りインストールしましたが、やはり上記のような状態です。 そこで、エラーを吐く/lib/modules/2.6.33.3-85.fc13.i686/buildへ行って見たところ、「このリンクはリンク切れです」と出ました。 そこで質問なのですが、このリンク切れを直したいのですが、どこにたどればいいのでしょうか。 よろしくお願いします。

  • QtでMakeがうまくいかない

    Qtの本を買ったので勉強しようと思い、サンプルを作ってみたのですがMakeがうまくいきません。 エラーメッセージを見る限りはリンカがおかしいみたいなのですが… 状況と環境を記載しますので問題点があればどなたかご教授お願いいたします。 なお、情報が足りなければ随時出していきますので何卒お願いいたします 【環境】 OS:Ubuntu7.04 ライブラリ:qt-x11-free3.2.1 コンパイラ:gcc(バージョンが沢山出てわかりませんが最新は4.1のよう) 【手順(インストール~Make)】 (1)tar.gzだったライブラリを/usr/localに展開 (2)環境設定のために「.profile」に以下を追加  QTDIR=/usr/local/qt-x11-free3.2.1  PATH=$QTDIR/bin:$PATH  MANPATH=$QTDIR/doc/man:$MANPATH  LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  export QTDIR PATH MANPATH LD_LIBRARY_PATH  ※設定後LD_LIBRARY_PATHだけechoでも確認できませんでした (3)ライブラリのMakeのためにqt-x11-free3.2.1ディレクトリ内の「configure」を実行 (4)適当に空のディレクトリにサンプルを作る。 (5)コマンド「qmake -project」を実行 (6)コマンド「qmake」を実行 (7)(6)によって作成されたMakeFileを実行 【状況】 コンパイルでエラーとなり以下が出力されます。 /usr/bin/ld: cannot find -lqt collect2: ldはステータス1で終了しました。 make: ***[Qt]エラー1

  • C言語でコマンドラインの引数について。

    コマンドラインで引数をわたす基本的なプログラムは main(int argc,char *argv[]){....] ですよね。 今回実行時に、 >実行ファイル名 123 + 233 といれたら、123+233を計算してくれるプログラムを作ろうとしています。 その場合、main(int argc,int *argv[]){} としたら、argv[1]に123が入って、argv[2]に+が入って、argv[3]に233が、入るというわけではないんでしょうか? とりあえず、確認で #include<stdio.h> main(int argc,int *argv[]) { printf("%d\n%d\n",argv[1],argv[3]); } としてみたんですが、実行結果は、とても長い数字がでてきてきました。 なにがいけないのか教えてください。 お願いします。 あとWindows MEでVC++6を使ってます。

  • エラーが出ます

    12,51,13,123,133,551,… というコンマで区切られているファイルを読み込みたいです。数字は100文字です。どう書けば全部読み込めるでしょうか? よろしくお願いします。 int main(int argc,char *argv[ ]){ int line; int i; FILE *fp; fp = (argc > 1)? fopen(argv[1],"r"): stdin; if(fp==NULL){ perror("fopen"); exit(0); }   while(fscanf(fp,"%d",&line) != EOF){ printf("%d\n") } if(argc>1){ fclose(fp);   }

  • GNU make終了時にコマンドを実行できますか?

    GNU make 4.x(4.1か4.2)を使ってMakefileを実行したとき、そのMakefileが成功しても失敗しても、make終了時に何かを実行させる方法は用意されていますか? "make && コマンド"や"make || コマンド"などの複合コマンドのほか、シェルスクリプト内で"make"とコマンドを連続実行するという方法は除きます。あくまでも"make"単体で実行するものとします。 実際そういうことをしたいというのではなく、"make"実行後、Makefile中で生成した一部の中間ファイルが勝手に削除されるという謎の現象が発生しており、その原因を探りたいです。 Makefile中の実行コマンドにわざとエラーを起こすようなコマンドを入れてみても(例えば存在しない"hogehoge"のようなコマンド)、そのエラーが表示された直後に、"rm XXXX YYYY"(XXXXとYYYYはMakefile内部で生成したファイル名)のようなコマンドが表示されて、実際にそのファイルは生成しているはずなのに消えてしまっています。 上記のエラーを起こすコマンドの前に"ls -l ディレクトリ名"を実行するようにして、エラーを起こす直前に中間ファイルが存在することは確認できています。しかしその後、勝手に"rm"が実行されてそのファイルは消されてしまいます。 よろしくお願いします。

  • makeについて

    quasar media playerと言うソフトをインストールしようと思いmakeの手前まではうまくいったのですがmakeで                ・                ・                ・                 省略 ../../../include/qt4/QtCore/qvector.h:321: instantiated from ‘const T& QVector<T>::operator[](int) const [with T = Skin]’ skinmanager.h:171: instantiated from here ../../../include/qt4/QtCore/qvector.h:92: error: ‘QVectorTypedData<T>::array’ has incomplete type skinmanager.h:37: error: forward declaration of ‘struct Skin’ ../../../include/qt4/QtCore/qvector.h: In member function ‘const T& QVector<T>::operator[](int) const [with T = Skin]’: skinmanager.h:171: instantiated from here ../../../include/qt4/QtCore/qvector.h:322: error: ‘struct QVectorTypedData<Skin>’ has no member named ‘array’ make: *** [configuration.o] エラー 1 root@ubuntu:/usr/local/src/v0.9_beta3# というエラーが出てきて先へ進めません。 このエラーを解決するには具体的にどうしたらいいのでしょうか。わかる方いらしたらどうかご教授よろしくお願いします。              

  • makeコマンドのエラーについて(

    UNIX(Linux)系のOSやC言語には不慣れなのですが、よろしくお願いします。 普段はWindows7(Home Ed.)を利用しているのですが、 いくつかのlinux系のソフトを利用する際にcygwinも利用しています。 ========================================================== cygwinにソフトウェアをインストールしようとする際に、 ときどき遭遇するエラーなのですが 仮にsoftware.tar.gzというソースファイルからインストールしようとして、 > gunzip -c software.tar.gz | tar xvf - > cd software > ./configure > make ..... make: *** [all-recursive] error というエラーが生じて、makeが通らない時があります。 ========================================================= これまで何度か、どういうエラーなのか調べようとする度に挫折し、 何回かやり直している内に、たまたまmakeがすんなり通って インストールできてしまったりしていたので、 なんとなくうやむやにしていました。 そもそも、この"all-recursive"に全くピンとこないのですが、 これはどういった場合に生じるエラーを示しているのでしょうか? recursive(再帰的な)だから、関数かなにかの呼び出しに失敗している、 とかそういうことなのでしょうか? エラーの内容はケースバイケースだし、 漠然とした質問になって申し訳ないのですが、 ちょっとしたアドバイスでもいいので、ご回答をお願いします。

  • コンパイルするとエラーに。C言語

    OSはLINUXです。GNOME 端末を使用してます。ここの関数でエラーが起きているみたいなんです。(部分的に載せてしまいましたが、それとも全体も載せた方がいいでしょうか?) void readargs(int argc, char *argv[]) { int c; int atoi(char *); while (--argc > 0 && (c = (*++argv)[0] == '-' || c == '+') { if (c == '-' && !isdigit(*(argv[0]+1))) while (c = *++argv[0]) switch (c) { case 'd': option |= DIR; break; case 'f': option |= FOLD; break; case 'n': option |= NUMERIC; break; case 'r': option |= DECR; break; default: printf("sort: illegal option %c\n", c); error("Usage: sort -dfnr [+pos1] [-pos2]"); break; } else if (c == '-') pos2 = atoi(argv[0]+1); else if ((pos1 = atoi(argv[0]+1)) < 0) error("Usage: sort -dfnr [+pos1] [-pos2]"); } if (argc || pos1 > pos2) error("Usage: sort -dfnr [+pos1] [-pos2]"); } } ちなみに、エラー内容は「case label not within a switch statement」 「break statement not within loop or switch」です。 似たような問題はできたのですが、これだけはなぜかエラーが起きてしまいました。アドバイス・回答待ってます。

  • コマンドラインから引数を渡すことについて

    ----------------------------------------------- #include<stdio.h> #include<stdlib.h> int main(int argc,char *argv[ ]) { FILE *fin,*fout; char ss[256]; if(argc != 3){ printf("引数の数が違います\n"); exit(1); } if((fin=fopen(argv[1],"r"))==NULL){ printf("入力ファイルをオープンできません\n"); exit(1); } if((fout=fopen(argv[2],"w"))==NULL){ printf("出力ファイルをオープンできません\n"); exit(1); } while(fgets(ss,256,fin)!=NULL){ fputs(ss,fout); } fclose(fin); fclose(fout); return 0; } ----------------------------------------------- 以上のプログラム名は「tcopy.cpp」でコマンドプロンプトから実行し、ファイルをコピーするという事を行っていきます。 「aaa.txt」と「bbb.txt」の2つを用意し、「aaa.txt」の内容、 abcdef ABCDEF 012345 を「bbb.txt」にコピーしていきます。 そこで疑問なのですが、ファイルをコピーする際、コマンドプロンプトから、 >tcopy aaa.txt bbb.txt と打ち込むとコピー出来るようであり、「tcopy」、「aaa.txt」、「bbb.txt」が引数になるという事なのですが、何故この3つが引数になるのかという事と、 int main(int argc,char *argv[ ]) のargcに引数が何故代入されるかが分かりません。 後、「aaa.txt」と「bbb.txt」がargv[1]とargv[2]に何故対応しているかが分かりません。 教えていただければ嬉しいです。

  • ソースプログラムのエラー

    自分で四則演算のプログラムを組んだのですが エラーが出てお手上げ状態です。 どこが間違っているのかどなたか教えていただけませんか?? ちなみに足し算の場合はいくつ足しても計算できるという プログラムです☆ #include<stdio.h> int main(int argc, char *argv[]){ int i,a=0,b=0,x=0; int m=0; if(argv[1]!="+"||argv[1]!="-"||argv[1]!="*"||argv[1]!="/"||){ printf("指定された文字ではありませんよ\n"); return -1; } a = atoi(argv[2]); b = atoi(argv[3]); if(argv[1]=="-"){ m=a-b; } if(argv[1]=="*"){ m=a*b; } if(argv[1]=="/"){ m=a/b; } if(argv[1]=="+"){ for(i=2;i<argc;i++){ x=atoi(argv[i]); m+=x; } printf("%d\n",m); return 0; }