【问题标题】:Converting an absolute path in #include in C在C中转换#include中的绝对路径
【发布时间】:2023-03-03 07:21:25
【问题描述】:

我正在尝试从存储库中获取一些代码以在我的系统上运行。

在其中一个 C 文件中,它包含一个头文件的绝对路径:

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

因为我的系统上不存在这个文件和目录,所以编译源代码失败。

我假设如果我将其更改为指向我个人的 config.h 位置,它会成功,但随后会在其他系统上失败。

有没有办法指向某个符号链接,然后系统会为此类文件使用正确的位置?处理这种情况的最佳方法是什么?

【问题讨论】:

    标签: c ruby include


    【解决方案1】:

    将其更改为#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}
    

    【讨论】:

      猜你喜欢
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2014-01-28
      相关资源
      最近更新 更多