Интерпретация относительного пути в linux -gcc env - PullRequest
2 голосов
/ 04 декабря 2008

У меня есть вопрос, связанный с тем, как относительные пути интерпретируются в различных средах. Если у меня есть код C для компиляции в Linux с использованием Makefile и gcc, и если какой-то исходный файл имеет:

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

где должен находиться этот файл. Или, другими словами, если у меня есть

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

будет ли компилятор искать xyz.ctl в той же папке, что и: -

a.) Где находится исходный файл с этим выражением fopen?

б.) Где находится make-файл?

c.) Где будет сгенерирован исполняемый файл linux?

Я знаю, что все относительные пути MSVC взяты из папки, в которой есть * .dsw (файл рабочей области). Для среды RVDS он начинается с папки, в которой генерируется исполняемый файл * .axf.

-AD

Ответы [ 2 ]

5 голосов
/ 04 декабря 2008

Ваш Makefile вызывает gcc, который компилирует ваш код, содержащий fopen (). fopen () вызывается при выполнении вновь скомпилированного кода. Путь относительно вашего текущего рабочего каталога, когда вы запустили программу.

1 голос
/ 04 декабря 2008

Путь в коде, скомпилированном любым инструментом Unix, относительно пути, по которому выполняется финальный исполняемый файл.

gcc не пытается понять, что вы делаете, и не анализирует пути, которые вы компилируете в свое приложение.

Насколько я знаю, команда копирования Windows - единственная команда, которая пытается "исправить" пути в приложениях, над которыми она работает. (История: у меня было приложение VB на дискете, и когда я скопировал его на C:, контрольная сумма файла изменилась. Разница показала, что копирование приложения на диск заменит "C: \" в приложении на " A: \ "и наоборот).

...