2010-12-27 15 views
3

Linux(Ubuntu)でC言語のソースファイルをコンパイルしようとしています。次のコマンドを実行しようとすると、「ruby.h」が見つからないというエラーが表示されます。LinuxでGCCを使って単純なソースファイルをコンパイルする方法

gcc custom_ext.c 

これは私に次のエラーメッセージを表示していました。

custom_ext.h:10: fatal error: ruby.h: No such file or directory 

だから私は、全体のRubyのソースコードをダウンロードして、ダミーのディレクトリ/home/braga/ruby_source/ruby_1_8_7にそれを置きます。私は、GCCがruby.hを特定して拾うことができるように、このディレクトリをパスに含める必要があることを知っていますが、どうやってそれを行うのかは分かりません。助けてください!!!

+1

gcc -I/home/braga/ruby​​_source/ruby​​_1_8_7 custom_ext.c – W55tKQbuRu28Q4xv

答えて

7

"ruby-dev"パッケージをインストールしましたか?

「apt-get」、「aptitude」、または他のパッケージマネージャのフロントエンドを使用して、Ubuntuリポジトリからパッケージをインストールするだけです。ソースをダウンロードする必要はありません。パッケージをインストールすると、すべてのツアーに必要なヘッダーとライブラリが標準のディレクトリに格納されるので、コンパイラのキーを扱う必要はありません。

reposに必要なパッケージがない(またはそれが古すぎる)場合にのみ、ソースコードのtarballをダウンロードしてインストールする必要があります(これはtarballの指示に含まれています)。

+0

ありがとう、本当に役に立ちました – bragboy

+0

Mac OS Xでrbenvと同じ問題が発生していますが、これは役に立たないようです。 –

1

-I /home/braga/ruby_source/ruby_1_8_7。その場合、サブディレクトリにはruby.hが存在する可能性があるので、それを見つけてそのディレクトリのパスを使用する必要があります。

+0

お返事ありがとうございます。今、別のエラーが発生しています。 '/home/braga/ruby_source/ruby_1_8_7/ruby.h:24:致命的なエラー:config.h:そのようなファイルやディレクトリはありません。 '私はrubyソースのconfig.hを探しました。その内側にはvmsというディレクトリがあります。私は今どうすればいい ? – bragboy

1

-Iがお手伝いします。 あなたはこれが出発点であるかもしれないし、あなたがより多くのパスを追加する必要があるかもしれません 検索/ -name ruby​​.h を使用して取得し、パスを追加します。あなたはRubyの拡張機能をコンパイルしようとしているように見えるので、正常

1

をコンパイルできるように戸部、this questionが役に立つかもしれません。ソースをダウンロードしたり手動でハッキングしたりすることは常に悪い考えであり、常に正式で便利な方法です。ランダムな場所にファイルを置いているのを見つけた場合は、しばらく停止し、間違っていないことを確認してください。

純粋に便宜上の理由で、ダウンロードしたヘッダーがリンクしようとしているバイナリライブラリと一致しない可能性があるため、関連する開発パッケージをすべてリポジトリからインストールする方が良いです。彼らがバイナリ互換でない場合、あなたは深刻な問題に自分自身を見つける。 apt-file検索コマンドとapt-cache検索コマンドは、必要な特定のパッケージ名を見つけるのに非常に便利です。

関連する問題