2

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

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

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

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

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

a.) 具有此语句 fopen 的源文件在哪里?

b.) makefile 在哪里?

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

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

-广告

4

2 回答 2

5

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

于 2008-12-04T10:37:23.837 回答
1

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

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

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

于 2008-12-04T10:35:05.590 回答