我有一个与在各种环境中如何解释相对路径有关的问题。 如果我有一个C代码要使用Makefile和gcc在linux上编译,并且如果某个源文件有:
fopen(“../../xyz.ctl”, ”r”);
此文件应位于何处。或者换句话说, 如果我有
fopen(“xyz.ctl” , ”r”);
编译器会在与: -
相同的文件夹中查找xyz.ctla。)哪里有这个语句fopen的源文件?
b。)makefile在哪里?
c。)将生成linux可执行文件吗?
我知道MSVC所有相对路径都来自具有* .dsw(工作区文件)的文件夹。对于RVDS环境,它从生成可执行文件* .axf的文件夹开始。
-AD
答案 0 :(得分:5)
你的Makefile调用gcc编译包含fopen()的代码。 执行新编译的代码时会调用fopen()。启动程序时,该路径相对于当前工作目录。
答案 1 :(得分:1)
任何Unix工具编译的代码中的路径都与执行最终可执行文件的路径有关。
gcc不会尝试理解您的操作,也不会分析您编译到应用程序中的路径。
据我所知,Windows copy命令是唯一一个试图“修复”它所使用的应用程序中的路径的命令。 (故事:我在软盘上有一个VB应用程序,当我将它复制到C:时,文件的校验和已经改变。差异显示将应用程序复制到磁盘会将应用程序中的“C:\”替换为“答:\“反之亦然。”