2008-12-04 120 views
2

我有一个问题涉及如何在各种环境中解释相对路径。 如果我一定要在使用的Makefile和gcc编译Linux的一个C代码,如果一些源文件有:在linux上的相对路径解释-gcc env

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

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

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

将编译器查找xyz.ctl在同一文件夹中: - 。

a)如果有这种说法的fopen源文件是否存在?

b。)哪里有makefile?

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

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

-AD

+0

为什么编译器会调用fopen?你的代码调用了这个。 – leppie 2008-12-04 10:18:19

回答

5

你的Makefile会调用编译你的包含fopen()的代码的gcc。 执行新编译的代码时会调用fopen()。启动程序时,路径与您当前的工作目录相关。

1

通过任何Unix工具编译的代码中的路径相对于在其中执行最后的可执行路径。

gcc并没有试图理解你所做的事情,也没有分析你编译到应用程序中的路径。

据我所知,Windows复制命令是唯一的命令,它试图“修复”它的工作应用程序中的路径。 (故事:我在软盘上有一个VB应用程序,当我将它复制到C:时,文件的校验和已经改变。差异表明将应用程序复制到磁盘将在应用程序中将“C:\”替换为“答:\“反之亦然)。