Ich verwende ifort und bekomme einen Linkfehler, wenn ich versuche, meine Programme mit Compiler-Optionen zu kompilieren. Trotzdem habe ich diese Optionen auf ein sehr kleines einfaches Programm getestet, das gleiche Problem.Compiler-Optionen auf Linux-Box in Ifort
Ich vermute daher, dass es mit der Art und Weise zu tun hat, dass ifort installiert wurde oder die Art von System, das ich verwende, aber ich kann nicht sicher sein. Diese Programme kompilieren in Ordnung, wenn sie ohne Optionen kompiliert werden. Meine Frage ist, was mache ich falsch ist es eine Möglichkeit, diese Fehler nicht zu haben, während die Compiler-Optionen oder die Compiler-Optionen einfach nicht kompatibel mit dem System, das ich verwende.
hier ist, wie das Programm regelmäßig kompiliert wird:
ifort -free testrealprint.out testrealprint.f90
hier ist, wie das Programm mit Optionen kompiliert wird:
ifort -free -O2 -stand f03 -check all -traceback -warn all -fstack-protector - assume protect_parens -implicitnone testrealprint.out testrealprint.f90
hier ist der sehr einfache Code, dass ich das testen, bin mit Compiler-Optionen:
Hier ist ein Teil der Fehlermeldung, die ich erhalte, wenn ich Th. verwende e Compiler-Optionen:
testrealprint.out: In function `_start':
(.text+0x0): multiple definition of `_start'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib64/crt1.o:(.text+0x0): first defined here
testrealprint.out: In function `_fini':
(.fini+0x0): multiple definition of `_fini'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib64/crti.o:(.fini+0x0): first defined here
testrealprint.out:(.rodata+0x0): multiple definition of `_IO_stdin_used'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib64/crt1.o: (.rodata.cst4+0x0): first defined here
testrealprint.out: In function `__data_start':
(.data+0x0): multiple definition of `__data_start'
ld: error in testrealprint.out(.eh_frame); no .eh_frame_hdr table will be created.
erhalten Sie versuchen, den Compiler benennen die endgültige ausführbare Datei als 'thre Realprint.out '? – talonmies
ja, ich versuche es. –