• ベストアンサー

パスの優先度の設定に関しまして

パスの設定方法に関して、 アドバイスいただきたいことがあり、 質問させていただきます。 qt4をyumでインストールしたのですが、 パスを確認すると、 qt4よりqt3の優先度の方が高くなっており、 プログラムをコンパイルする際に、 qt4が認識されず困っております。 設定されているパスの表示方法(echo $PATH)や、 パスの追加方法は分かったのですが、 $ PATH=$PATH:"追加したいパス" $ export PATH パスの優先度を決めるにはどうしたらよいかを、 調べる事ができませんでした。 qt3より先に、qt4を認識させるために、 パスの優先度を変更したいです。 ご存知でしたら教えていただきえると ありがたい次第です。 OSはCentOS5系を使用しています。 宜しくお願い致します。

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

  • ベストアンサー
noname#136147
noname#136147
回答No.4

#3です。 一時的に使いたい、コンパイルしたい場合は 端末(Terminalなど)でコマンドを打てば良いです。 使いつづける場合、アプリケーションを立ち上げる前に毎回設定しないと動かない場合もあるので、 http://www.mythtv.org/pipermail/mythtv-users/2008-December/241017.html にあるようなスクリプトをコピーして、 /etc/profile.d/qt44.sh のようなファイルを作ってしまえば、 常に有効になると思います。 (/etc/profile.dのなかにqt3のQTDIRを設定しているファイルがあるかもしれません。) これだとすべてのユーザに有効になってしまうので、 1アカウントだけ使いたいという時は、~/.bashrc なんかに書いておくのもいいと思います。 また、リンク先はQTDIRにqt4を設定してしまっているので、 QTDIRをQT4DIRに変更して使った方がいいかもしれません。 (QT3のアプリケーションに影響するかもしれないので) 当方、Slackwareな環境なので未確認です。申し訳ないです。 ちなみにうちの環境は、/etc/profile.d/qt4.shというファイルがあって ==== /etc/profile.d/qt4.sh ===== #!/bin/sh # Environment variables for the Qt package. # # It's best to use the generic directory to avoid # compiling in a version-containing path: if [ -d /usr/lib/qt4 ]; then QT4DIR=/usr/lib/qt4 else # Find the newest Qt directory and set $QT4DIR to that: for qtd in /usr/lib/qt-* ; do if [ -d $qtd ]; then QT4DIR=$qtd fi done fi if [ ! "$CPLUS_INCLUDE_PATH" = "" ]; then CPLUS_INCLUDE_PATH=$QT4DIR/include:$CPLUS_INCLUDE_PATH else CPLUS_INCLUDE_PATH=$QT4DIR/include fi PATH="$PATH:$QT4DIR/bin" export QT4DIR export CPLUS_INCLUDE_PATH ================================= となっていて、一応QT3とQT4の住み分けが出来ております。

c_iamok
質問者

補足

bcoffeeさん! ありがとうございました。 すごく分かりやすかったです。本当に感謝しております。 さて、リンク先にもありましたとおり、 「QTDIRをQT4DIRに変更」する部分に留意し、 「vi /etc/profile.d/qt44.sh」で、 シェルスクリプトを作成し問題を解決できました! ありがとうございました! 図々しく本当に恐縮なのですが、 このqt4のインストール関係でどうしても分からないことがあり、 もう1つだけ教えてください。 Fedora9にqt4をインストールした際には 「/usr/lib/qt4/bin」ディレクトリ下に、 「qmake-qt4」というファイルがあったのですが、 同じく、 CentOS5系にqt4をインストールした際は、 「/usr/lib/qt4/bin」下には、 「qmake-qt4」というファイルは 存在していなかった次第です。 このFedoraにインストールした際に存在する、 「qmake-qt4」に代替するものというのは、 CentOSに「qt4」をインストールした場合の どのファイルに該当するか?って分かりますでしょうか? CentOSでいう「/usr/lib/qt4/bin」ディレクトリ下にある ファイルの一覧です ============ assistant designer linguist lrelease lupdate moc pixeltool qdbus qdbuscpp2xml qdbusxml2cpp qmake qt3to4 qtconfig rcc uic uic3 ============ 「これ以上は言う事なし」の場合は、 放置していただいて結構です。 もし、何か最後の一言ありましたら、 些細な事でも言及していただけると嬉しいです。 細かなアドバイスありがとうございました。 参考になりました。

その他の回答 (4)

noname#136147
noname#136147
回答No.5

#3です。 おめでとうございます。 解決してよかったですね。 qmakeとqmake-qt4の件ですが、 CentOS,Fedoraともに使っていないので以下は想像です。 うちの環境ですと、 ======================================================== % ls -l /usr/bin/qmake* lrwxrwxrwx 1 root root 21 2009-01-11 12:45 /usr/bin/qmake -> /usr/lib/qt/bin/qmake* lrwxrwxrwx 1 root root 27 2009-01-20 14:59 /usr/bin/qmake-qt4 -> /usr/lib/qt-4.4.3/bin/qmake* % ls -l /usr/bin/*-qt4 lrwxrwxrwx 1 root root 31 2009-01-20 14:59 /usr/bin/assistant-qt4 -> /usr/lib/qt-4.4.3/bin/assistant* lrwxrwxrwx 1 root root 35 2009-01-20 14:59 /usr/bin/assistant_adp-qt4 -> /usr/lib/qt-4.4.3/bin/assistant_adp* lrwxrwxrwx 1 root root 30 2009-01-20 14:59 /usr/bin/designer-qt4 -> /usr/lib/qt-4.4.3/bin/designer* lrwxrwxrwx 1 root root 30 2009-01-20 14:59 /usr/bin/linguist-qt4 -> /usr/lib/qt-4.4.3/bin/linguist* lrwxrwxrwx 1 root root 30 2009-01-20 14:59 /usr/bin/lrelease-qt4 -> /usr/lib/qt-4.4.3/bin/lrelease* lrwxrwxrwx 1 root root 29 2009-01-20 14:59 /usr/bin/lupdate-qt4 -> /usr/lib/qt-4.4.3/bin/lupdate* lrwxrwxrwx 1 root root 25 2009-01-20 14:59 /usr/bin/moc-qt4 -> /usr/lib/qt-4.4.3/bin/moc* lrwxrwxrwx 1 root root 31 2009-01-20 14:59 /usr/bin/pixeltool-qt4 -> /usr/lib/qt-4.4.3/bin/pixeltool* lrwxrwxrwx 1 root root 42 2009-01-20 14:59 /usr/bin/qcollectiongenerator-qt4 -> /usr/lib/qt-4.4.3/bin/qcollectiongenerator* lrwxrwxrwx 1 root root 27 2009-01-20 14:59 /usr/bin/qdbus-qt4 -> /usr/lib/qt-4.4.3/bin/qdbus* lrwxrwxrwx 1 root root 34 2009-01-20 14:59 /usr/bin/qdbuscpp2xml-qt4 -> /usr/lib/qt-4.4.3/bin/qdbuscpp2xml* lrwxrwxrwx 1 root root 33 2009-01-20 14:59 /usr/bin/qdbusviewer-qt4 -> /usr/lib/qt-4.4.3/bin/qdbusviewer* lrwxrwxrwx 1 root root 34 2009-01-20 14:59 /usr/bin/qdbusxml2cpp-qt4 -> /usr/lib/qt-4.4.3/bin/qdbusxml2cpp* lrwxrwxrwx 1 root root 36 2009-01-20 14:59 /usr/bin/qhelpconverter-qt4 -> /usr/lib/qt-4.4.3/bin/qhelpconverter* lrwxrwxrwx 1 root root 36 2009-01-20 14:59 /usr/bin/qhelpgenerator-qt4 -> /usr/lib/qt-4.4.3/bin/qhelpgenerator* lrwxrwxrwx 1 root root 27 2009-01-20 14:59 /usr/bin/qmake-qt4 -> /usr/lib/qt-4.4.3/bin/qmake* lrwxrwxrwx 1 root root 28 2009-01-20 14:59 /usr/bin/qt3to4-qt4 -> /usr/lib/qt-4.4.3/bin/qt3to4* lrwxrwxrwx 1 root root 30 2009-01-20 14:59 /usr/bin/qtconfig-qt4 -> /usr/lib/qt-4.4.3/bin/qtconfig* lrwxrwxrwx 1 root root 25 2009-01-20 14:59 /usr/bin/rcc-qt4 -> /usr/lib/qt-4.4.3/bin/rcc* lrwxrwxrwx 1 root root 25 2009-01-20 14:59 /usr/bin/uic-qt4 -> /usr/lib/qt-4.4.3/bin/uic* lrwxrwxrwx 1 root root 26 2009-01-20 14:59 /usr/bin/uic3-qt4 -> /usr/lib/qt-4.4.3/bin/uic3* lrwxrwxrwx 1 root root 33 2009-01-20 14:59 /usr/bin/xmlpatterns-qt4 -> /usr/lib/qt-4.4.3/bin/xmlpatterns* ======================================================== となっていて、/usr/lib/qt-4.4.3/bin にPATHを加えない代わりに /usr/bin/*-qt4 と名前を変えてリンクを張っているようです。 ので、たぶん混在しないための工夫として名前を変えているんじゃないでしょうか? CentOSとFedoraでその工夫の仕方が違うのだと思います。 /usr/lib/qt4/bin/以下のファイルは、実質的には同じものだと思います。 詳しくは、qt4のインストール時に実行されるのスクリプトか、 パッケージのビルドスクリプト(SRPMの中身 .specファイルなど)を見れば分かると思うので、 興味があれば見てみてください。 あと、名前が違って困らないのか?という疑問もあるかもしれませんが、 /usr/lib/pkgconfig/Qt*.pc (/usr/lib/qt4/pkgconfig/以下かも) に、どのコマンドを使うかの定義みたいなのがありますので心配無用です。 qt44.shの中にもあったようですが、 $ /usr/bin/pkg-config --variable=prefix QtCore のように configure スクリプト内で pkg-config コマンドを使ってどのコマンドに対応しているか判断してくれるようです。

c_iamok
質問者

お礼

bcoffeeさん! ご丁寧な御意見ありがとうございます。 大変参考になりました。 qmakeとqmake-qt4の件ですが、 御意見、とても的を得ているように感じました。 興味があるないようですので、 いただいた内容を参照し、更に調べてみたいと思います。 本当にありがとうございました。 とても勉強になりました。 20Ptではなく、200Ptくらいをもらってほしいくらいです。

noname#136147
noname#136147
回答No.3

qt3とqt4の混在環境のときは、環境変数のQTDIR,QT4DIRを利用しています。 うちの環境では、 export QTDIR=/usr/lib/qt <= qt3のインストール位置 export QT4DIR=/usr/lib/qt4 <= qt4のインストール位置 とするだけでもそのままコンパイルが通るものが多いです。 これだけではダメな場合は、下記のリンク先のように PATHとQTDIRをqt4のもので上書きしてやると良いでしょう。 2. Compiling Qt4 Applications http://wiki.zenwalk.org/index.php?title=HOWTO_Compile_QT_Applications

参考URL:
http://wiki.zenwalk.org/index.php?title=HOWTO_Compile_QT_Applications
c_iamok
質問者

補足

bcoffeeさん! ご回答ありがとうございます。 何か教えていただいた内容が改善策にマッチしている気がします。 >うちの環境では、 >export QTDIR=/usr/lib/qt <= qt3のインストール位置 >export QT4DIR=/usr/lib/qt4 <= qt4のインストール位置 >とするだけでもそのままコンパイルが通るものが多いです。 で、初歩的な事で恐縮ですが、 上記内容に関して、念のため詳しく教えて欲し事があります。 教えていただいた内容は、 任意のディレクトリで、 一時的にパスを設定するときの要領で 以下のとおり、打ち込めばいいだけな感じですが? 合っておりますでしょか? それとも、どこかのファイルに書き込む感じですしょうか? # export QTDIR=qt3のディレクト # export QT4DIR=qt4のディレクト 何度もお手前をかけさせますが、 宜しくお願い致します。

  • 774danger
  • ベストアンサー率53% (1010/1877)
回答No.2

すでに別のところでPATHの定義がされているので(${PATH}の中にqt3が含まれていると思われる)、このようになってしまうんでしょう 大元を直すか、.bashrcで、 PATH=/usr/lib/qt4/bin/qmake:${PATH} としたらどうなりますか?

c_iamok
質問者

補足

774dangerさん! 確かに PATH=/usr/lib/qt4/bin/qmake:${PATH} を行う事で、パスを確認すると、 「qt4」が一番初めに出てくるようになりました! ありがとうございました。 ただ、これでもコンパイルが進まなかったので、 もう少し、別の事もためしてみたいと思います。 ご親切にありがとうございました!

  • 774danger
  • ベストアンサー率53% (1010/1877)
回答No.1

"追加したいパス"のパスの順番を、qt3がインストールされているディレクトリよりも前にqt4のディレクトリを先に書けばいいです 使っているシェルが何かわかりませんが、bashだとしたらホームディレクトリの.bashrcあたりに設定が書いてありませんか?

c_iamok
質問者

補足

シェルはbashを使用しています。 最初は以下のとおりでした。 # echo -e ${PATH//:/'\n'} /usr/local/sbin /usr/sbin /sbin /usr/kerberos/sbin /usr/lib/qt-3.3/bin /usr/kerberos/bin /usr/local/bin /bin /usr/bin /usr/java/jdk1.6.0_10/bin で、次に、アドバイスをいただきましたとおり、 .bashrcを覗いてみたら、 何もパスらしき記述が書かれていなかったので、 自ら、一番下の行に 「qt4」が「qt3」の前にかかれる事を意識しながら、 以下のように追加しました。 PATH=${PATH}:/usr/lib/qt4/bin/qmake:/usr/lib/qt-3.3/bin その後、パスを確認すると、 以下のとおり、追加自体はされていたのですが、 やはり、元々書かれていた「/usr/lib/qt-3.3/bin」は 消えていない状態でした。 # echo -e ${PATH//:/'\n'} /usr/local/sbin /usr/sbin /sbin /usr/kerberos/sbin /usr/lib/qt-3.3/bin ←元々書かれている /usr/kerberos/bin /usr/local/bin /bin /usr/bin /usr/java/jdk1.6.0_10/bin /usr/lib/qt4/bin/qmake ←追加 /usr/lib/qt-3.3/bin ←追加 その後、念のため、 「vi /etc/profile」にも、 同様に「qt4」→「qt3」の順になるように注意しながら、 パスを追加していみたのですが、 同じ結果となってしまいました次第です。

関連するQ&A

  • プロセス起動時の優先度の設定

    XPにおける下記の設定方法なんですが、 cmd /c start ""優先度 /D"実行プログラムのパス" 実行プログラム 実行プログラムへのオプション /LOW 優先度「低」でアプリケーションを起動させる。 /BELOWNORMAL 優先度「通常以下」でアプリケーションを起動させる。 /NORMAL 優先度「通常」でアプリケーションを起動させる。 /ABOVENORMAL 優先度「通常以上」でアプリケーションを起動させる。 /HIGH 優先度「高」でアプリケーションを起動させる。 /REALTIME 優先度「リアルタイム」でアプリケーションを起動させる VISTAではなぜか /HIGH /REALTIME両方とも/ABOVENORMALになっちゃいます。 コマンドがわかる方いらっしゃいますでしょうか?

  • pathを追加するスクリプト

    初歩的な質問内容ですが、よろしくお願いします。 ある作業マシンにログインするたびに、 export PATH="/hoge:$PATH" と打つのが面倒なので、スクリプトを作ることにしました。 スクリプトを作るのは初めてなので、ちょっとネットで調べて、 path.shというファイルに #!/bin/sh export PATH="/hoge:$PATH" echo $PATH と記述して、 $ sh path.sh と実行しました。 すると、スクリプト内のechoによって表示された$PATHを見ると hogeの部分がちゃんと追加されているように見えるのですが、 もう一度改めて(スクリプトでなく)$ echo $PATH と打ってみるとhogeは$PATHに追加されていず、 実際にもpathが通ってくれてないです‥。 理由、解決策など、教えて頂けるとうれしいです。 よろしくお願いします。 --- また、普通はこういう場合、.bash_profileなどを編集すると思うのですが、今回それはしたくないです。理由は、 自分がこのマシンの使うのが一時的ということもあって、 自分のユーザとしてでなく、rootとして入っている為です。 自分以外の人もrootでログインすることが多いので、 スクリプトを実行するような形でpathを変更したいです。

  • pathの問題かと思われるのですが…

    javacが認識されません。 他の方の過去の質問も見返しているのですが、解決法がわからないので質問させてください。 jdkをインストールし、インターネットで調べて環境変数でpathを変更してclasspathを追加したのですが、なおjavacが認識されません。 コマンドプロンプトではこのように表示されていて、間違ってはいないと思うのですが…。 C:\Users\(ユーザー名)>echo %PATH% C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\Java\jdk1.6.0_06\bin CLASSPATHはC:\Java と設定しています。 また、ユーザーの環境変数にPATHを追加し、C:\Program Files\Java\jdk1.6.0_06\bin としてやってみましたが、やはりうまくいきませんでした。

  • PATHの設定がうまくいきません。

    JAVA初心者です。JAVAをはじめようとJDKのDCが添付されている入門書を購入し、インストールしました。JAVAソースファイルをコンパイルしようとしてMS-DOSを起動し、説明通りしてるのですが、javac first.java(2行目です) と入力しEnterを押すと下記のようなコメントが出てきます。 ”準備ができていません。読み取り中、ドライブE” 結局、CD-ROMを入れるとコンパイルするとできるのですが、皆さんはコンパイルする際は常にCDを入れているのでしょうか? PATHの設定がおかしいのでしょうか。 AUTOEXEC.BATを開くと C:\PROGRA~1\NETWOR~1\MCAFEE~1\SCAN.EXE C:\ @IF ERRORLEVEL 1 PAUSE @ECHO OFF loadhigh c:\windows\COMMAND\nlsfunc.exe c:\windows\country.sys PATH E:\OFFICE;C:\FJUTY; REM Environment Settings For McAfee VirusScan SET PATH=%PATH%;C:\PROGRA~1\NETWOR~1\MCAFEE~1 path "%path%;C:\Perl\bin;" path "%path%;C:\Perl\bin;" path "%path%;C:\Perl\bin;" path "%path%;C:\jdk1.3\bin;" となっていました。 私は5行目が怪しいと感じていますが、勝手に触るとつぶれそうなので ご存知の方、PATH設定に詳しい方、アドバイス宜しくお願いします。

  • アプリの優先度の設定

    アプリの優先度の設定で(タスクマネージャーアプリの優先度の設定)で 通常以上に設定しても 一度閉じてしまって そのあとに開くと もとに戻ってしまっているのは 起動している時にみ設定をかえられるということ なのでしょうか? もし そうならば PCを起動するたびに あるアプリに対する優先度を 毎回 通常以上に設定する方法はありますでしょうか? また 優先度の設定自体があまりPCには よくないというのを見たことありますが その辺は どうなんでしょうか? 設定 または ソフトを使用しての方法 どちらでもかまわないので 教えてください

  • 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による)などで 固定で設定する場合、注意することはありますか? 個人的に思っているのは、パスの先頭に追加すると既存サービスなどに影響を与える可能性があるので、 最後尾に追加していくことぐらいです。 以上です。よろしくお願いします。

  • JavaでPATH設定を修正する方法を教えて下さい

    Window7マシンにJava SE Development Kit 8(jdk-8u74-windows X64.exe)をインストールしました。 環境変数PATHの設定で、システム環境変数の中にすでに「Path」がありました。選択後の「編集」段階で最初から入力されている部分を消さないで最後のところに下記を追加すればよかったのですが、一部を消して編集してしまいました。 C:\Program Files\Java\jdk1.8.0_74\bin; これが原因してかどうか不明ですが、javacコマンドを実行してjavaソースプログラムをコンパイルすると、また「C:\>javac –version」とバージョン確認をしても、「'javac' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」のメッセージが表示されてしまい、コンパイルをすることもバージョン確認もできません。 因みに、javac.exe は、CドライブのProgram Files\Java\jdk1.8.0_74\bin にあり、次のようにしてバージョン確認をするとjavac 1.8.0_74と表示されて、バージョンが確認できます。 C:\Program Files\Java\jdk1.8.0_74\bin>javac –version インストールしたJava SE Development Kit 8 をアンインストールした後に、再度インストールして、PATHの設定・編集をしなおそうとしたのですが、アンインストール前に設定した PATH のままで修正はできませんでした。 次のように通常のjavacコマンドを実行してjavaソースプログラムをコンパイルするには、PATHの設定をどのようにすればよいかを教えてください。 C:\>javac Hello.java 或いは、PATHの修正ができない場合は、javaソースプログラムをコンパイルするには、どのようにすればよいかを教えてください。 尚、環境変数「JAVA_HOME」を、「変数名」を「JAVA_HOME」、「変数値」を「C:\java\jdk1.8.0_74;」として、JDKをインストールしたディレクトリに合わせて新規に設定していますが、コマンドプロンプトを起動し「set JAVA_HOME」と入力し実行したところ、JAVA_HOME=C: JAVA\ jdk1.8.0_74; と表示され、その後、「C:\>java –version」とjavaのバージョンを確認したところ、正常に確認できています。

    • ベストアンサー
    • Java
  • JavaJDK6におけるPath設定

    Windos7におけるJavaJDK6におけるPath設定 について、どうしてもエラー ('javac'は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして 認識されていません。)になってしまうので投稿 させて頂きました。 以下のサイトに載っていたやり方で全く同じように設定してみました。 【Pathの設定】 http://www.javadrive.jp/install/jdk/index4.html 文字なども誤字脱字などは何度もチェックしたので 大丈夫だと思います。 ちょっと気になるのがコマンドプロンプトの画面で C:Users>○○○○○○○>javac -version Usersの後に管理者(ローマ字で僕の名前)が出てくるの ですがこれはエラーと関係あるのでしょうか? 先に進めずほとほと困っています(泣) どなたか解決方法を教えて頂けたらと存じます。 宜しくお願いします。

    • ベストアンサー
    • Java
  • RPMパッケージソフトをインストールした場合のコンパイルオプションの調べ方。

    CentOSにてyumでSendmailをインストールしました。 ソースファイルからインストールする場合、いろいろコンパイルオプションがつけれますが、yumでインストールした場合どんなオプションで コンパイルされているのか調べる方法はあるでしょうか? 教えてください。

  • 環境変数 PATH を消してしまいました...

    javaのPATHを通そうと設定をしたのですがコマンドプロンプトで認識されていないことが 分かり、設定を色々替えていたところ、PATHと言う項目自体消えてしまいました。 ●●のユーザー環境変数(上部のウインド)には項目がなかったのですが、新規で追加を してみたのですが、上手く動かずそちらも削除してしまいました。 システム環境の変数(下部のウインド)に元々色々な文字が入っていた物を消してしまい シャットダウンをする時や立ち上げる時、プログラムを削除する時に『●●が見つからなかった ため....』と小窓が開いてしまいます。 それを調べたところ、PATHを消してしまったことが問題のようだと分かったのですが解決の 方法が分かりません。ほとんど分からないのに色々いじりすぎたことを反省しています。 どなたか教えてください。 宜しくお願いします。