2011-12-19 10 views
1

システムで動作するリポジトリから取得したコードを取得しようとしています。このファイルおよびディレクトリはソースコードが失敗したコンパイル、私のシステム上に存在しないのでC言語の#includeの絶対パスを変換する

#include "/home/user/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux/ruby/config.h" 

:Cファイルの一つで

は、それはヘッダへの絶対パスが含まれています。

これをconfig.hの私の個人的な場所を指すように変更すると、それは成功しますが他のシステムでは失敗します。

シンボリックリンクを指し示す方法はありますか?その場合、システムはそのようなファイルの適切な場所を使用しますか?この状況に近づく最善の方法は何ですか?

+0

この問題を修正していただきありがとうございます。 – Strobecast

答えて

4

#include "ruby/config.h"に変更し、-I/home/user/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux/(または現在地が何であれ)をコンパイラオプションに追加します。これは、#includeを探すときにディレクトリをディレクトリのリストに追加するようにプリプロセッサに指示します。

:あなたはオプション/引数としてこのパスを取るために、メイクファイルを生成何でも変更することができ、またはあなただけのメイクファイルの先頭に変数に入れて、それを変更するために人々を求めることができ、移植性を解決するために

RUBY_LOCATION = /home/user/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux/ 

CFLAGS = -Wall -I${RUBY_LOCATION}