簡體   English   中英

在C中的#include中轉換絕對路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM