• ベストアンサー
  • すぐに回答を!

gcc -print-file-nameオプション

Linuxの初心者です。 VMwareで動作するFedoraCoreで組込ソフトを開発しようとしています。 arm-linux-gcc -print-file-name=crt1.o を実行すると crt1.o とファイル名だけ表示されます。 書籍等では /usr/lib/crt1.o と絶対パスで表示されると書かれているのですが -print-file-name でパスが表示されないのは何か設定不足があるのでしょうか? こちらで行ったのはprofile.dにarm-linux-gccのbinとusr/binにパスを設定するファイルをおいただけです。 超初歩的なミスなのかもしれませんが、知恵を貸して頂けると幸いです。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数561
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.1
  • entree
  • ベストアンサー率55% (405/735)

> 書籍等では /usr/lib/crt1.o と絶対パスで表示されると書かれているのですが > -print-file-name でパスが表示されないのは何か設定不足があるのでしょうか? そういうものです。 gcc -print-file-nameはgcc -print-search-dirsで表示されるディレクトリを順 に検索し、見つかったファイルを表示します(asとldだけはコンパイル時に指定 された特別なディレクトリを真っ先に検索します)。検索パス上に見つからない 場合はそのままの値を返します。 crt1.oは検索パス上にないのでcrt1.oと表示されます。それは正しい動作です。 書籍の結果が違うのはバージョンの問題なのか誤植なのか・・・。 そういったところです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

-print-search-dirs で表示されるフォルダにcrt1.o等のリンクエラーになるファイルをコピーしたら正常にリンクが通りました。 ありがとうございました。

質問者からの補足

ありがとうございます。 -print-search-dirsで調べたらcrt1.oのあるフォルダは検索対象になっていませんでした。 ちなみに検索パスには後で追加は出来ないのでしょうか? crt1.oは必ず必要なものだと思いますので -Lオプションでライブラリのパスを指定しなくてもリンク出来る様にしたいのですが・・・

関連するQ&A

  • gccできない

    Linux初心者です。 vmware上でubuntuのOSを動作させ、 ターミナルから gcc <作成したファイル>.c と実行すると、 /usr/bin/gcc: cannot execute binary file と出力されます。 /usr/bin/gccの実行権は確認しましたが、 問題ありませんでした。 何か理由として考えられるものはないでしょうか? 曖昧な質問ですいません。 補足として、 Hacking:美しき策謀用のLiveCDをvmwareにインストールして使用しています。

  • GCCでライブラリが足りない

    はじめまして。 LindowsOS4.0を使っています。 コンパイルができずに困っています。 GCCとMAKEをインストールしました(Lindowsはどちらも入っていないのです。Debian/Woodyベースと言われています)。 gcc 2.95.4 make 3.79.1 which gcc とすると、/usr/bin/gcc と表示されます。 で、./configure すると、 ..... checking whether the C compiler works ... no と表示されコンパイルエラーになります。 configure.log を見ると、 ------------------- checking for gcc configure:916: checking whether the C compiler (gcc ) works configure:932: gcc -o conftest conftest.c 1>&5 /usr/bin/ld: cannot open crt1.o: No such file or directory collect2: ld returned 1 exit status configure: failed program was: #line 927 "configure" #include "confdefs.h" main(){return(0);} --------------------- とか --------------------- checking for gcc configure:905: checking whether the C compiler (gcc ) works configure:921: gcc -o conftest conftest.c 1>&5 /usr/bin/ld: cannot open crt1.o: No such file or directory collect2: ld returned 1 exit status configure: failed program was: #line 916 "configure" #include "confdefs.h" main(){return(0);} ---------------------- とかなっています。 confdefs.hというのは何かのライブラリなのでしょうか?これが無いとconfigureできないのでしょうか?? よろしくお願いいたします。

  • gccのインクルードパスの確認

    #include <stdio.h> は デフォルトのインクルードパス(/usr/include/)からstdio.hファイルを 探しますよね? http://oshiete1.goo.ne.jp/kotaeru.php3?q=2006018 ここに書いてあるように gcc -print-search-dirs を実行してみたのですが、/usr/include の記述は 含まれていませんでした。 http://www.sra.co.jp/wingnut/gcc/gcc-j.html で-print-search-dirsのオプションの意味を見てみましたがよくわかりませんでした。

  • Linuxのgccのインクルードパス?

    Linuxのgccで、インクルードファイルやライブラリのパスを設定する方法が知りたいのですが、gccについて詳しい書籍やサイトがありましたら、教えてください。 gccとccの違いも知りたいです。 例) #include "example.h" このままだと、example.hが無いと表示されます。

  • H8300-hms-gccでコンパイルできない

    H8マイコンの開発環境(C言語)をcygwinにインストー ルしましたが,h8300-hms-gccでコンパイルできません. ソースファイルが保存されているディレクトリでコンパ イルしてるにもかかわらず,No such file or directry となって,ソースファイルを認識しないのです.一方, 通常のgccではコンパイルできます. echo $PATHで確認しましたが,h8300-hms-gccが保存さ れている/usr/local/binへのパスは通ってます. 何が原因なのか全く分かりません. 宜しくお願いいたします. OSはWindows 2000です.

  • gcc@MinGW:外部コマンドの起動

    MSYS2/MinGW64 on Windows10 の環境で gcc 開発をしています。 下記の簡単なソースを用意します。 #include <stdio.h> #include <stdlib.h> void main() { system("/usr/bin/ls"); exit(0); } なお、/usr/bin/ls の存在は、   $ which ls ↓   /usr/bin/ls にて確認しています。 これを /mingw64/bin/gcc でコンパイルして実行すると、 '/usr/bin/ls' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と表示され、明らかに存在するはずの ls コマンドが起動されません(上記エラーメッセージ中のマルチバイト文字はなぜか cp932 で表示されています)。 ところが、同じソースを /usr/bin/gcc でコンパイルすると、問題なく実行されるのです。 MSYS2 と MinGW の関係がよく理解できていないこともあり、どうしてこのようなことが起こるのか理解に苦しんでいます。 どなたかお心当りのあるかた、お教え下されば幸いです。

  • gccでx11コンパイル

    昨日MacBookを購入してきて X11 X11SDK Xtoolをいれたと思うのですが (Xtermとgccは軌道確認積み) Linuxで動いていた(勉強していた) C言語でかいたX11のソースをMacに持ってきて cc xprog.c -oxprog -lx11 を動かしても(xtermにて) コンパイルができなくて困っています /usr/bin/ld: can't locate file for: -lx11 collect2: ld returned 1 exit status よろしくお願いします

    • ベストアンサー
    • Mac
  • ?name=%94%E9%89%D8の表示

    $stock = array ( "./cgi-bin/photobbal25.cgi?name=%94%E9%89%D8"=>"143時間:43分:05秒", "./cgi-bin/photobbal25.cgi?name=naomi"=>"143時間:43分:05秒", "./cgi-bin/photobbal25.cgi?name=%82%D0%82%EB%82%DD"=>"117時間:31分:29秒") foreach($stock as $key => $value) { print "$key\n;" print "{$value}\n"       print "      \n" //ここに表示したい } 上記はPHPのコードです ?name=%94%E9%89%D8の %94%E9%89%D8を日本語で表示したい よろしくお願いします。

    • ベストアンサー
    • PHP
  • 玄箱PRO用gdbのクロスコンパイル

    現在、玄箱PROを使って勉強をしています。 なお、勉強するにあたって Debian化によるコンパイル環境は玄箱に入れない(組み込み開発の勉強をしているので) としています。 gdbを玄箱にインストールしようと思っているのですが、途中でエラーが出てしまいます。 エラーを解消するために調べてみたのですが、解消のための方法をまねしてもうまくいきませんでした。 クロスコンパイルの知識のある方、経験のある方どなたか御教示願えませんでしょうか? やった手順と環境です。 【環境】 コンパイル環境:CentOS 5.5 動作環境:玄箱PRO(Linux2.6) 【手順】 (1)http://www.codesourcery.com/sgpp/portal/datasheet?target_arch=ARM&target_os=EABI からARM用EABIコンパイラをダウンロードし、コンパイル環境に展開 (2)玄箱PROの付属CDからgdb-2005q3-2.tar.gzを展開 (3)2で展開されたgdb-2005q3-2.tar.bz2をさらに展開 (4)3で展開されたgdb-2005q3ディレクトリ内に移動 (5)環境変数を設定 export PATH="<1で展開したコンパイラのパス>/libexec/gcc/arm-none-linux-gnueabi/3.4.4" export PATH="<1で展開したコンパイラのパス>/bin" export CROSS_PREFIX="<任意のパス>" (6)CCの環境変数を設定 export CC="<1で展開したコンパイラのパス>/bin/arm-none-linux-gnueabi-gcc" (6)configure実行 ./configure --host="arm-none-linux-gnueabi" --target="arm-none-linux-gnueabi" --build="i686-pc-linux-gnueabi" --prefix=${CROSS_PREFIX} (7)make実行 エラーの内容は以下でした。 =================================================== ・ ・ ・ make[2]: *** [install-recursive] エラー 1 ・ ・ ・ make[1]: *** [install-bfd] エラー 2 =================================================== 【補足】 make installするとinclude、share、libのディレクトリはできている。 gdbとは別にgcc-2005q3-2のコンパイルは成功している。 以上

  • cygwin gccでのコンパイル

    cygwinをインストールをallでインストールし、gccでコンパイルを行おうとしたところ /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/../../../../i686-pc-cygwin/bin/ld: cannot find -luser32 collect2: ld returned 1 exit status と表示され、コンパイル出来ません。 なにが原因でしょうか。 以上、宜しくお願い致します。