他人が作ったプログラムを、標準ライブラリ関数を使わないようにしてコンパイルしたいと思っています。そこで、MakefileのLDFLAGSやCFLAGSに-nostdlibオプションや-fno-builtinオプションを設定してコンパイルしようとしたのですが、なぜか起きるはずの(ソースを見ると確実に標準ライブラリ関数があるので)リンクエラーが発生しません。通常通りライブラリへのリンクが行われているようです。なんらかの設定でオプションが上書きされ無効化されているのだとは思うのですが、原因がわかりません。どなたか原因と考えられるものがありましたら教えてください。コンパイラはgcc、OSはUbuntuを使っています。Makefileはautoconfを利用して作成しました。(ファイル名)となっているので、オプションが渡されていないという事はないはずです。オプションが指定されているのでこの処理ではリンク処理は行われません。リンカオプションなので、リンク時に指定しないと意味がありません。コンパイル時にリンカオプションが使われている所を見ると、やはりMakefileが少しおかしいように思います。どのようなオプションが渡されているかを確認するといいと思います。するとリンク処理にはgccではなくリンカを直接起動しているのかもしれません。オプションは意味がなくなってしまうと思います。(URLは思いつかなかったので、GCCのマニュアルのURLを書いておきます。)http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Option-Index.html#Op...Makefileを精査したところ、どうやらCFLAGSやLDFLAGS等のオプションをどれでも利用しているようでした。お教えいただいた通り、-cを呼び出さずにgccを呼び出している所のオプションを確認し、そこで指定されていた-ldl等のオプションを省いてmakeしたところ、エラーを出すことができました。ありがとうございました。20:22:52標準ライブラリ関数を使わないでコンパイルすることはできません。gccのオプションで、-nostdlibをつけると標準システムスタートアップファイルや標準システムライブラリを使用しないでコンパイルできるはずなので、それを指定すればできると思うのですが。(ファイル名)となっているので、オプションが渡されていないという事はないはずです。それでもエラーは出ていません。終了しましたこの辺の話を理解するには、「そもそもコンパイラは何をしているか?」の理解が必要です。コンパイル、リンクとかです。http://www.mi.s.osakafu-u.ac.jp/~kada/course-kitami/j3_02/guide0...今回の問題は、コンパイルだけしてリンクを行わなかったのでエラーがでなかってのではないかと。それに対して自分の例では、コンパイルを行い、リンク時に始めて標準システムライブラリを見に行き、そこで始めて関数(自分の例だとprintf)が無いと始めて気づいたのでエラーが出たと言う話です。確かに-cオプションを消すとエラーが出ました。最後にmain.cをコンパイルした.oファイルと一緒にその書庫ファイルをコンパイルしているようでした。結局、最後のmain.cのコンパイル時の-ldl等のオプションを省くことでエラーを出す事ができました。今回の事でMakefileやgcc、コンパイラについての知識不足を痛感する事ができ、勉強になりました。ありがとうございました。(ファイル名)となっているので、オプションが渡されていないという事はないはずです。オプションが指定されているのでこの処理ではリンク処理は行われません。リンカオプションなので、リンク時に指定しないと意味がありません。コンパイル時にリンカオプションが使われている所を見ると、やはりMakefileが少しおかしいように思います。どのようなオプションが渡されているかを確認するといいと思います。するとリンク処理にはgccではなくリンカを直接起動しているのかもしれません。オプションは意味がなくなってしまうと思います。(URLは思いつかなかったので、GCCのマニュアルのURLを書いておきます。)http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Option-Index.html#Op...Makefileを精査したところ、どうやらCFLAGSやLDFLAGS等のオプションをどれでも利用しているようでした。お教えいただいた通り、-cを呼び出さずにgccを呼び出している所のオプションを確認し、そこで指定されていた-ldl等のオプションを省いてmakeしたところ、エラーを出すことができました。ありがとうございました。00:11:32原因は分かりませんが、例えば、Makefileに間違いがあってLDFLAGSに指定した値が使われていないといった可能性があるのではないでしょうか。どのようなオプションが渡されているのかを確認すると何か分かるのではないでしょうか。12:08:05ちょっと補足です。a.c」コマンドを実行するを書くのを忘れていました。分かり辛かったかったかもしれません。gccの内部動作を解説している本を紹介しておきます。(0)@${screen_name}${name}${text}Twitterでのつぶやきはまだありません「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。これ以上回答リクエストを送信することはできません。はてなココの「ともだち」を表示します。Serverへ移行します。linuxでapacheを入れようとしています。apache1.3.29をソースでとってきて、configureすると、Makefileが作成されません。DLLがついているプログラムで、他のパソコンで動作確認済みの物を頂いたのですが、動きません。...12005/07/0840pthot_icModula-3という言語で書かれたプログラムを利用したいのですが、言語のインストールすらままならない状態です。...22006/09/0670pttowadaエレベーターの昇降を管理するプログラムの仕様について解説を探しています。...12001/08/11ryowindows2000で[スタート][プログラム][スタートアップ]の中に無いのに、起動するたびにタスクバーに現れるプログラムがあります。}}${price}円{{/if}}知りたいことを検索してみようログインして回答する進んだ先のページで「許可する」ボタンを押してはてなによるアクセスを許可すると、認証が終わります。ご利用にあたりましては、はてな利用規約が適用されます。ご確認いただきご同意の上でご利用ください。