linux -gcc env的相对路径解释

时间:2008-12-04 10:14:28

标签: relative-path

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

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

此文件应位于何处。或者换句话说, 如果我有

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

编译器会在与: -

相同的文件夹中查找xyz.ctl

a。)哪里有这个语句fopen的源文件?

b。)makefile在哪里?

c。)将生成linux可执行文件吗?

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

-AD

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

任何Unix工具编译的代码中的路径都与执行最终可执行文件的路径有关。

gcc不会尝试理解您的操作,也不会分析您编译到应用程序中的路径。

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