Ich versuche, ein einfaches Hello World-Programm mit Solaris Studio 12.x unter Solaris 11 zu erstellen. Wenn ich die gleiche Datei aus zwei verschiedenen Ordnern kompiliere, bekomme ich einen Unterschied in der Objektdatei, wie durch den Befehl diff oder cmp angezeigt.Solaris Studio Hinzufügen von aktuellen Verzeichnisinformationen in Objektdatei
Wurde ein Hex-Dump von beiden Objektdateien (od -x) genommen und verglichen und mit einem Online-Tool, das Hex in ASCII konvertieren kann, festgestellt, dass der Unterschied auftritt, da die Objektdateien das aktuelle Verzeichnis enthalten, aus dem die Kompilierung wurde initiiert.
Die Frage ist, wie man den Compiler anweist, die Informationen über das aktuelle Verzeichnis in den Objektdateien nicht zu berücksichtigen. Habe einige Optimierungsoptionen versucht - war nicht nützlich, um dies zu beheben.
Hier sind die Codes und Befehle, die ich verwendet:
bash-4.1$ cat a.cpp
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}
bash-4.1$ ls
a.cpp temp1 temp2
bash-4.1$ cd temp1
bash-4.1$ /opt/SunProd/studio12u3/solarisstudio12.3//bin/CC ../a.cpp
bash-4.1$ cd ../temp2
bash-4.1$ /opt/SunProd/studio12u3/solarisstudio12.3//bin/CC ../a.cpp
bash-4.1$ cd ..
bash-4.1$ diff temp1/a.out temp2/a.out
Binary files temp1/a.out and temp2/a.out differ
bash-4.1$ cmp temp1/a.out temp2/a.out
temp1/a.out temp2/a.out differ: char 5968, line 24
bash-4.1$ od -x temp1/a.out > temp1/a.hex
bash-4.1$ od -x temp2/a.out > temp2/a.hex
bash-4.1$ diff -c temp1/a.hex temp2/a.hex
... shows hex diff (two sets) ...