[英]Converting an absolute path in #include in C
我試圖獲取一些我從存儲庫獲取的代碼,以便在我的系統上工作。
在其中一個C文件中,它包含標頭的絕對路徑:
#include "/home/user/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-linux/ruby/config.h"
由於我的系統上不存在此文件和目錄,因此編譯源代碼失敗。
我假設如果我將其更改為指向config.h的個人位置,它將成功但在其他人的系統上失敗。
有沒有辦法指出一些符號鏈接,系統將使用適當的位置這樣的文件? 處理這種情況的最佳方法是什么?
將其更改為#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}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.