Frage

Ich habe eine Frage im Zusammenhang, wie relativen Pfade in verschiedenen Umgebungen ausgelegt werden. Wenn ich einen C-Code kompiliert unter Linux zu verwenden Makefile und gcc, und wenn einige Quelldatei:

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

Dabei sollte diese Datei befindet. Oder mit anderen Worten, wenn ich

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

würde der Compiler sucht xyz.ctl in demselben Ordner wie die: -

a.) Wo Quelldatei diese Aussage fopen mit vorhanden ist?

b.) Wenn Make-Datei vorhanden ist?

c.) Wenn die ausführbare Linux würde generiert werden?

Ich weiß, dass MSVC alle relativen Pfade aus dem Ordner sind, die die * .dsw (Arbeitsbereich-Datei) hat. Für RVDS Umgebung beginnt es aus dem Ordner, in dem sich die ausführbare * .axf erzeugt wird.

-AD

War es hilfreich?

Lösung

Ihr Makefile ruft gcc, die den Code enthält, fopen kompiliert (). fopen () aufgerufen wird, wenn Sie die neu kompilierte Code auszuführen. Der Pfad ist relativ zum aktuellen Arbeitsverzeichnis, wenn Sie das Programm gestartet.

Andere Tipps

Der Pfad im Code von jedem Werkzeug Unix kompiliert ist relativ zu dem Pfad, in dem die letzten ausführbaren ausgeführt wird.

gcc nicht versucht, zu verstehen, was Sie tun, und es Pfade nicht analysieren, die Sie in Ihre Anwendung zu kompilieren.

Soweit ich weiß, ist der Windows-Kopierbefehl der einzige Befehl, die Pfade in Anwendungen zu „reparieren“ versucht, es funktioniert auf. (Story: Ich hatte eine VB-Anwendung auf einer Diskette und wenn ich es auf C kopiert :, die Prüfsumme der Datei geändert hatten ein diff zeigte, dass die App auf der Festplatte zu kopieren ersetzen würde. „C: \“ in der App " A:. \“und umgekehrt)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top