【问题标题】:Relative path interpretation on linux -gcc envlinux -gcc env 上的相对路径解释
【发布时间】:2008-12-04 10:14:27
【问题描述】:

我有一个关于如何在各种环境中解释相对路径的问题。 如果我有一个要在 Linux 上使用 Makefile 和 gcc 编译的 C 代码,并且如果某个源文件有:

fopen(“../../xyz.ctl”, ”r”); 

这个文件应该放在哪里。或者换句话说, 如果我有

fopen(“xyz.ctl” , ”r”); 

编译器是否会在与以下相同的文件夹中查找 xyz.ctl:-

a.) 包含 fopen 语句的源文件在哪里?

b.) makefile 在哪里?

c.) linux 可执行文件将在哪里生成?

我知道 MSVC 的所有相对路径都来自具有 *.dsw(工作区文件)的文件夹。对于 RVDS 环境,它从生成可执行文件 *.axf 的文件夹开始。

-AD

【问题讨论】:

  • 编译器为什么会调用fopen?您的代码调用它。

标签: relative-path


【解决方案1】:

您的 Makefile 调用 gcc 来编译包含 fopen() 的代码。 fopen() 在你执行新编译的代码时被调用。该路径是相对于您启动程序时当前工作目录的路径。

【讨论】:

    【解决方案2】:

    任何 Unix 工具编译的代码中的路径都是相对于执行最终可执行文件的路径。

    gcc 不会尝试了解您所做的事情,也不会分析您编译到应用程序中的路径。

    据我所知,Windows 复制命令是唯一尝试“修复”它所处理的应用程序中的路径的命令。 (故事:我在软盘上有一个 VB 应用程序,当我将其复制到 C: 时,文件的校验和已更改。差异显示将应用程序复制到磁盘会将应用程序中的“C:\”替换为“ A:\" 反之亦然)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2019-07-17
      • 2011-10-13
      • 2014-10-01
      • 1970-01-01
      相关资源
      最近更新 更多