• ベストアンサー

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

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

  • ベストアンサー
  • nthnbslk
  • ベストアンサー率80% (8/10)
回答No.4

>OS:Ubuntu7.04 >ライブラリ:qt-x11-free3.2.1 ここがよくわからないのですが、Ubuntu 7.04 なら公式パッケージに qt3関連の開発環境があるので SynapticからQt開発環境をインストールすればいいはず。 (わざわざ古い qt 3.2.1のソースをコンパイルする必要はない) そのうえで、Qtのサンプルプログラムをコンパイルすればいいのではないですか。 例)Ubuntsu公式のQt3をインストールした場合、環境変数QTDIRは /usr/share/qt3 です。 サンプルソースを仮に qhelloworld.cpp とすると、 $ export QTDIR=/usr/share/qt3 $ gcc -o qhelloworld -I$QTDIR/include -L$QTDIR/lib -lqt-mt qhelloworld.cpp で、実行ファイル qhelloworld が作成されます。

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

その他の回答 (3)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.3

>>(3)ライブラリのMakeのためにqt-x11-free3.2.1ディレクトリ内の「configure」を実行 >がそれにあたると思っているのですが違っているのでしょうか? 多分違う。 アーカイブを解凍した場所に INSTALL とか README とかそれっぽい文書があるはずなのでそれを見よう。

全文を見る
すると、全ての回答が全文表示されます。
  • cynthia4
  • ベストアンサー率51% (186/358)
回答No.2

問題点もなにも >※設定後LD_LIBRARY_PATHだけechoでも確認できませんでした library が、見つからないのは ある意味当然だと思いますが 最初の問題点。未だ有るかも知れませんが これを Clear しないと .bashrc の最後に設定してみて下さい。 /******* .bash_profile に書いてみたが どうも反映されない source .bash_profile ではなくて、logout login .bashrc のなかの bash_completion がどうも良く良く解りません 追求する気もないのですが *******/

nuno0920
質問者

補足

.bashrcに設定したところLD_LIBRARY_PATHが設定できました。 ありがとうございました。 しかしその状態でもMakeで同じエラーが発生しています。

全文を見る
すると、全ての回答が全文表示されます。
  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

もちろん、Qt ライブラリ自体はコンパイルしたんですよね。 tar ファイルを展開しただけってことはさすがにないですよね。 あと、コンパイル方法によっては libqt じゃなくて libqt-mt が作成されたような。。。(うろ覚え)

nuno0920
質問者

補足

私の中では >(3)ライブラリのMakeのためにqt-x11-free3.2.1ディレクトリ内の「configure」を実行 がそれにあたると思っているのですが違っているのでしょうか? 実行後にmakeのログが出ていたように見えたので これでコンパイルできていると思っていたのですが…

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

関連するQ&A

  • Snortの自動起動について

    Snortを自動起動したいと思ってるのですが、エラーを吐いてしまいます centos5.8でsnortは2.9.2.2です インストール先は/usr/local/snortで/usr/loca/snort/bin/snort -vで起動しようとすると /usr/local/snort/bin/snort: erorr while loading shared libraries: libdnet.1: can not open shared object file: No such file or directory のエラーがでてしまいます /usr/local/libにlibdnet.1のファイルは存在して、/etc/ld.so.confファイルに/usr/local/libを記述、/sbin/ldconifgを実行して、再起動したのですが、同じエラーがでてしまいます export LD_LIBRARY_PATH=/usr/local/libを実行するとエラーはでなくなるのですが、ACIDを導入したいので、自動起動できるようにしたいです どなたかアドバイスおねがいします

  • solarisのmakeについて

    こんにちは。教えて下さい。 solaris7にperl5.6.1をインストールしようとしている所です。 ./configuerを実行したあと、makeをしないといけないようなのですが、 make とやると、「見つかりません」と言われてしまいます。 PATHが通ってないのかと思い、echo$PATH とやると /usr/bin:/usr/sbinと出てきます。 で、ここでmakeを探したのですが見あたらなかったので、 find / -name make としてやると、 /usr/share/lib/make /usr/ccs/bin/make /usr/xpg4/bin/make の三つが見つかりました。 このうち、Linuxでいう/usr/bin/makeにあたる物はどれなんでしょうか。 それとも、私は基本的に何か勘違いをしているでしょうか。 solarisもLinuxもよくわかっていません。 何かアドバイスいただけると嬉しいです。宜しくお願いいたします。

  • PostgreSQLをCentOS5にインストールしました。

    閲覧有難うございます。 質問内容なのですが、Postgresqlをインストールしたのですがpostgresql.confとpg_hba.confが見つかりません。 OSはCentOS5です。 インストール方法は以下の手順で行いました。 # /usr/sbin/adduser postgres # chown postgres:postgres /usr/local/pgsql # mkdir /usr/local/src/postgres-8.2.6 # chown postgres:postgres /usr/local/src/postgresql-8.3.7 # su - postgres # cd /usr/local/src # tar xfz /usr/local/src/postgres-8.2.6.tar.gz # cd /usr/local/src/postgres-8.2.6 # ./configure # make # make install また、 [root@ ~]# su - postgres -bash:  LD_LIBRARY_PATH=/usr/local/pgsql/lib: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found [postgres@ ~]$ のようなエラーがはかれるようになりました。 どうか皆様のお力をお貸しください。

  • qmakeに関してお知恵をかしていただけるとありがたいです

    皆様、こんにちわ。 Linux初心者ですが、 お付き合いの程宜しくお願い致します。 とあるソフトウェアをビルドしている最中、 以下のエラーの通り、 「qmake-qt4」がないとのことで、 途中でコンパイルが中止されてしまいました。 ■エラー文 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ qmake-qt4: command not found ということで早速、 yumで、「qmake」「qmake-qt4」を探したのですが、 どうも適切なパッケージを見つける事ができませんでした。 「qt4」については、以前よりyumでインストール済みです。 # yum install qt4  Package qt4 - 4.2.1-1.i386 is already installed. googleなどで探し、 Debianパッケージでの 当該インストール方法は見つけられました。 当方、サーバを触り始めて間もなく、 割かし簡単な内容なのかもしれず、 大変申し訳ないですが、 「qmake-qt4」をインストールする方法に関しまして、 アドバイスいただける方いらっしゃいましたら、 お叱りや、 どんな小さな事でも結構ですので、 教えていただけるとありがたいです。 私はCentOS5系を使用しています。 念のためfindコマンドにて探してみましたら、 「qmake」に関しまして見つかるのですが、 「qmake-qt4」については見つかりませんでした。 # find / -name "qmake" -print /usr/lib/qt-3.3/bin/qmake /usr/lib/qt4/bin/qmake /usr/lib/qt4/examples/qmake # find / -name "qmake-qt4" -print 該当無し 皆様どうぞ宜しくお願い致します。

  • LiveからインストしたFedora MAKE出来ない

    こんにちは。 そのままですが・・・ Liveから起動後に、 HDDにインストールした Fedora8です。 # yum -y install update など一通りは終わってます。 一通りってアバウトで申し訳ありませんが。。。。 qmailをインストールしようと思いまして、 /usr/local/src にwgetで取って来て解凍後に、 パッチなどを当てて後に、 # make setup check とすると。 bash: make: command not found と出ます。 makeがないのかな?って思いまして、 # whereis make make: /usr/bin/make でした。 # echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin: だったので一応、 #vi .bash_profile export PATH=$PATH:/usr/bin/make で通すと /usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/usr/bin/make になりましたが、 # make setup check すると、 bash: make: command not found と出ます。 その他、 アプリケーション→ソフトウェア追加・削除から、 開発なども少し追加してみましたが。。。 どうも上手くmakeが動きません。 その他、アプリケーションとか稼働させてますので、 再インストールすれば良い! などの回答ではなく、今の状況からmakeが使えるように、 なる方法をご教授下さい。 よろしくお願いします。

  • Qtライブラリを静的にリンクしたい

    Qt 5.11.0 を使ってGUIアプリをつくろうとしているのですが、実行時の問題があります。 ソースは初心者用のサンプルソースコードで、Qt Creator を使って以下の「main.cpp」を作成しました。 #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } ウインドウ生成は「mainwindow.cpp」で、 #include "mainwindow.h" #include <Qtgui> #include <QtWidgets> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QLabel *label = new QLabel(tr("Hello World.")); setCentralWidget(label); } MainWindow::~MainWindow() { } となっています。 これをビルドして、Qt Creatorから実行するとウィンドウが表示されます。 しかし、単独で(ダブルクリックで)実行しようとすると 「コンピューターにQt5Cored.dllがないため、プログラムを開始できません。・・・」 というシステムエラーが表示され、実行できません。 これ以外に、mingwとmake を使って別のサンプルソースをコンパイルしても同様のエラーが出てきます。 実行ファイルと同じディレクトリにQt5Widgets.dll、Qt5Core.dll、Qt5Gui.dllの3つのDLLをコピーすると、実行できます。 しかし、いちいちDLLを要請するプログラム構成は好きでないのと、同名のライブラリlibQt5Widgets.a、libQt5Core.a、libQt5Gui.aがあることから、できれば静的にリンクしたいと思っています。 静的にリンクするために以下の4つの方法を試してみましたが、ことごとく失敗しています。 方法1 ライブラリを指定してリンク g++ -static -O0 -g -o Qt_test.exe Qt_test.obj -lmingw32 -LC:\Qt\5.11.0\mingw53_32\lib -lQt5Widgets -lQt5Core -lQt5Gui -lqtmain -LC:\utils\my_sql\my_sql\lib -LC:\utils\postgresql\pgsql\lib -lshell32 のような書式で、3つのライブラリの順番を入れかえて6パターン試しましたが、DLLエラーは変わりません。 方法2 ライブラリをld.exeでまとめたオブジェクトファイルを作ってリンク 「GNUソフトウェアプログラミング」という本の112ページにリンカ「ld」のオプションについての記述があり、オブジェクトファイルとライブラリ同士をリンクする方法が紹介されていたので試してみましたが、未解決の参照がない?のか、20バイトのファイルが出力されただけでした。 ld -static -r -o qtobj.o C:\Qt\5.11.0\mingw53_32\lib\libQt5Gui.a C:\Qt\5.11.0\mingw53_32\lib\libQt5Widgets.a C:\Qt\5.11.0\mingw53_32\lib\libQt5Core.a ld -static -r -o qtobj.o -LC:\Qt\5.11.0\mingw53_32\lib -lQt5Gui -lQt5Widgets -lQt5Core 方法3 arでオブジェクトファイルを作る ar rs qto2.a C:\Qt\5.11.0\mingw53_32\lib\libQt5Gui.a C:\Qt\5.11.0\mingw53_32\lib\libQt5Widgets.a C:\Qt\5.11.0\mingw53_32\lib\libQt5Core.a でライブラリをまとめたファイルは作れるのですが、コンパイルするとリンク時に qto2.a: error adding symbols: Archive has no index; run ranlib to add one となり、うまくいきません。 方法4 Qt creator で静的リンク Qt Creatorで「ライブラリの追加」を行うと、「HelloWrold.pro」に以下の行が加わり、リンクできそうなのですが、実行時にやはりDLLを要求されます。 LIBS += -LC:/Qt/5.11.0/mingw53_32/lib/ -lQt5Core 結局は、Qtで静的なリンクを行う方法が知りたいのです。 ご助言をお願いいたします。 環境は、Win7、Mingw、QtはMingwパッケージオプションを付けてインストールしており、 「C:\Qt\5.11.0\mingw53_32\lib\libQt5Core.a」 「C:\Qt\5.11.0\mingw53_32\include」 「C:\Qt\5.11.0\mingw53_32\bin\Qt5Core.dll」 があり、中にDLLもライブラリもあります。 よろしくお願いします。

  • libstdc++.so.5にパスが通らない

    Solaris8のコンソール上でC++でコーディングしたプログラムを実行したのですが、libstdc++.so.5が見つからないというエラーが出ます。 .cshrc内で setenv LD_LIBRARY_PATH /usr/local/lib とパスを設定してあるのですが…… なお、当然ながら/usr/local/libには該当するlibstdc++.so.5が存在しています。

  • makeやmake installの結果について

    openssl1.0.0eで最近コンパイルをしました。 ※1のopensslは、tarから展開したものです。 1.  cd /usr/local/src/openssl 2.  ./config --prefix=/usr/local/openssl -openssldir=/usr/local/openssl shared 3   .make && ls 4、  make install && ls 3と4のmakeコマンドの後に、わざとlsをくっつけております。 何が目的かといいますと、 「make中、makeinstall中に、エラーが出てないかを判断したい」 と考えて、&&をつけました。 (&なので、エラーがでたら、きっとlsが走らないだろう。と考えたため) いざ実行すると、make && ls のls部分が走りませんでした。 ・質問 コマンドの実行結果は、何かの環境変数を参照したりすることで 確認できたりするものなのでしょうか? どなたかご存知の方がいらっしゃいましたら ご教授お願いします。

  • PATHとLD_LIBRARY_PATHの設定

    solarisまたはlinuxで、ソースインストールする際のPATHとLD_LIBRARY_PATHについての質問です。 1. ソースインストールする際に、事前にPATHやLD_LIBRARY_PATHを設定してから、 ./configure → make をするよう説明しているサイトがありますが、 インストールするときだけPATHやLD_LIBRARY_PATHを変更しても問題ないのでしょうか? たとえば、インストール時に$ export LD_LIBRARY_PATH=/lib:/usr/libとしてインストールしたけど、 実際にサービスを起動する際はLD_LIBRARY_PATHは未設定というような状態のことです。 2. ソースインストールする際、./configureとmakeを実行する一般ユーザのPATHやLD_LIBRARY_PATHの示すパスと、 make installを実行するrootユーザのPATHやLD_LIBRARY_PATHの示すパス(または順番)が異なっていても大丈夫でしょうか? たとえば、一般ユーザはLD_LIBRARY_PATH=/lib:/usr/libだけど、 rootユーザはLD_LIBRARY_PATH=/usr/local/lib:/lib というような状態のことです。 3. exportなどによる一時的な設定ではなく、profieや/etc/ld.so.conf(solarisではcrleによる)などで 固定で設定する場合、注意することはありますか? 個人的に思っているのは、パスの先頭に追加すると既存サービスなどに影響を与える可能性があるので、 最後尾に追加していくことぐらいです。 以上です。よろしくお願いします。

  • makeでのエラー

    makeをした際に、 /usr/local/lib/gcc-lib/h8300-elf/3.3/../../../../h8300-elf/bin/ld.real:skipping incompatible /usr/local/lib/gcc-lib/h8300-elf/3.3/libgcc.a when searching for libgcc.a /usr/local/lib/gcc-lib/h8300-elf/3.3/../../../../h8300-elf/bin/ld.real: cannot find libgcc.a collect2: ld returned 1 exit status make: ***[basic1] Error 1 と表示されるのですが、このエラーとはどういう意味なのでしょうか? わかる方教えてください。お願いします。