2011-12-19 393 views
1

我想獲得一些代碼,我從存儲庫中獲取以在我的系統上工作。因爲這個文件和目錄沒有我的系統上不存在,編譯源代碼失敗轉換#include中的絕對路徑C

#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/(或任何您的位置)添加到您的編譯器選項。這告訴預處理器在查找#includes時將該目錄添加到要搜索的目錄列表中。

爲了解決可移植性,那麼你可以改變任何生成的makefile走這條路作爲一個選項/參數,或者你可以把它放在一個變量在Makefile的頂部,並要求人們改變:

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

CFLAGS = -Wall -I${RUBY_LOCATION} 
相關問題