• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

gcc Fehlermeldung

Hallo Allerseits,
ich bin gerade von suse 8.0 auf suse 10.0 umgestiegen.
Ich möchte Fortran-Programme compilieren. Suse 10.0 hat den unter 8.0 vorhandenen g77-Compiler nicht mehr. Internetrecherchen haben ergeben das GNU jetzt alle Sprachen im gcc-Compiler zusammengefasst hat. Habe also gcc installiert und versucht ein kleines Testprogramm "test.f" zu übersetzen. Es kommt die Fehlermeldung:
"gcc: installation problem, cannot exec 'f951': Datei oder Verzeichnis nicht gefunden".
Was mache ich falsch?
 
OP
S

soso121155

Newbie
ich habe bis jetzt nur das Paket "gcc" der Suse-Distribution installiert. Ein Paket "gcc-Fortran" ist bei der suse-10.0 Distribution nicht dabei. Muss ich das zuzätzlich irgendwo runterladen?
 

Calvin

Hacker
Doch, es ist bei SuSE10 dabei
Code:
tobi@linux:~> apt policy gcc-fortran
gcc-fortran:
  Installiert: (nichts)
  Kandidat: 4.0.2_20050901-3
  Versionstabelle:
     4.0.2_20050901-3 0
        500 http://ftp4.gwdg.de SuSE/10.0-i386/base pkglist

Download des RPMs direkt unter http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/10.0-i386/RPMS.base/gcc-fortran-4.0.2_20050901-3.i586.rpm
 
OP
S

soso121155

Newbie
ich habe unter yast > Software nach gcc-fortran suchen lassen. Es wurde nichts gefunden. Soll ich das Paket runterladen und installieren?
 

Calvin

Hacker
Auf der Download-Version von SuSE10 scheint es tatsächlich nicht dabei zu sein. Dann lade es dir über den Link in meinem Posting runter. Danach kannst du es auch mit YaST oder über rpm -Uhv gcc-fortran-4.0.2*.rpm installieren
 
OP
S

soso121155

Newbie
ich hab's runtergeladen und versucht zu installieren. Es fehlt aber noch irgendwas:
error: Failed dependencies:
libgmp.so.3 is needed by gcc-fortran-4.0.2_20050901-3
ich hab die Datei in yast > software gesucht aber nichts gefunden.
 

Grothesk

Ultimate Guru
Du brauchst gmp.
Das findest du auch auf dem oben verlinkten ftp-Server.

Du kannst dir aber auch apt mal anschauen oder mal schauen wie man in yast zusätzliche Installationsquellen anlegt. Dann musst du das nicht alles von Hand laden, was dir bei der Downloadversion fehlt.
 
OP
S

soso121155

Newbie
So ich hab gmp auf meiner gebrannten DVD gefunden und installiert. Der Compiler scheint jetzt vollständig. Es fehlen aber noch irgendwelche Lib's.
Habe mal folgendes Hallo World als Test-Programm verwendet:

PROGRAM test
write(*,*)' Hello World'
stop
end

Beim Compilieren kommt folgende Fehlermeldung:

gcc test.f
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../crt1.o: In function `_start':
../sysdeps/i386/elf/start.S:115: undefined reference to `main'
/tmp/ccair32t.o: In function `MAIN__':
test.f:(.text+0x8): undefined reference to `_gfortran_filename'
test.f:(.text+0x12): undefined reference to `_gfortran_line'
test.f:(.text+0x1c): undefined reference to `_gfortran_ioparm'
test.f:(.text+0x26): undefined reference to `_gfortran_ioparm'
test.f:(.text+0x2f): undefined reference to `_gfortran_st_write'
test.f:(.text+0x3e): undefined reference to `_gfortran_transfer_character'
test.f:(.text+0x46): undefined reference to `_gfortran_st_write_done'
test.f:(.text+0x50): undefined reference to `_gfortran_stop_numeric'
collect2: ld returned 1 exit status

Unter suse 8.0 habe ich dem g77 immer die c-Library Option: -lc gegeben das funktioniert aber jetzt nicht mehr. Weisst du welche Library er noch braucht?
 

oc2pus

Ultimate Guru
gfortran (GNU Fortran 95 (GCC)
scheint da zu fehlen

Code:
apt search gfortran
compat-g77 - GNU Fortran 77 Compiler
gcc-fortran - The GNU Fortran Compiler and Support Files
gcc_41 - The GNU C Compiler and Support Files
gcc_41-fortran - The GNU Fortran Compiler and Support Files
 

oc2pus

Ultimate Guru
soso121155 schrieb:
wo kann ich das runterladen?

du hast es jetzt schon mehrfach gesagt bekommen:
du musst entweder dein YaST schlauer machen und weitere Installationsquellen hinzufügen

ODER

du schaust dir apt an.

ODER

du suchst bei rpmseek.com oder http://rpm.pbone.net nach den Paketen um dann festzustellen, das diese wiederum weitere brauchen ...

Alle Wege führen zum Ziel. Aber du wirst IMMER Probleme haben manuell die Abhängigkeiten aufzulösen ... deshalb gibt es diese Tools. Wie du an meinem vorherigen Posting gesehen hast, war das ein einfaches apt search gfortran ... der nächste Schritt wäre bei mir apt install xyz und fertig.
 
OP
S

soso121155

Newbie
hab die Stelle in yast gefunden wo man Installationsquellen eintragen kann. Was soll ich da eintragen?
apt hab ich installiert muss aber erst mal den Durchblick kriegen:
#apt search gfortran
gcc-fortran - The GNU Fortran Compiler and Support Files
# apt install gfortran
Reading Package Lists... Done
Building Dependency Tree... Done
E: Couldn't find package gfortran
#
 

oc2pus

Ultimate Guru
soso121155 schrieb:
hab die Stelle in yast gefunden wo man Installationsquellen eintragen kann. Was soll ich da eintragen?
apt hab ich installiert muss aber erst mal den Durchblick kriegen:
apt search gfortran
gcc-fortran - The GNU Fortran Compiler and Support Files
linux:/home/dieter/tps # apt install gfortran
Reading Package Lists... Done
Building Dependency Tree... Done
E: Couldn't find package gfortran

das Paket nennt sich ja auch gcc-fortran
also apt install gcc-fortran

da der Name unbekannt war, haben wir ja gesucht ... um ihn zu ermitteln, you see ;)
 
OP
S

soso121155

Newbie
Das Paket gcc-fortran hab ich doch vorhin erst installiert.

#apt install gcc-fortran
Reading Package Lists... Done
Building Dependency Tree... Done
gcc-fortran is already the newest version.
0 upgraded, 0 newly installed, 0 removed and 0 not upgraded.
#

Daran kann es allso nicht liegen.
 

oc2pus

Ultimate Guru
AAAArgh ....

Ausgangspunkt:
Code:
gcc test.f
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../crt1.o: In function `_start':
../sysdeps/i386/elf/start.S:115: undefined reference to `main'
/tmp/ccair32t.o: In function `MAIN__':
test.fSad.text+0x8): undefined reference to `_gfortran_filename'
test.fSad.text+0x12): undefined reference to `_gfortran_line'
test.fSad.text+0x1c): undefined reference to `_gfortran_ioparm'
test.fSad.text+0x26): undefined reference to `_gfortran_ioparm'
test.fSad.text+0x2f): undefined reference to `_gfortran_st_write'
test.fSad.text+0x3e): undefined reference to `_gfortran_transfer_character'
test.fSad.text+0x46): undefined reference to `_gfortran_st_write_done'
test.fSad.text+0x50): undefined reference to `_gfortran_stop_numeric'
collect2: ld returned 1 exit status

==> es fehlt eine Library
==> suche die Library
==> wie sucht man, welche Tools gibt es ...
==> libgfortran bzw -lgfortran in der linker-Anweisung angeben

aber ich klinke mich nun mal aus. Suche ein wenig mit Freund google oder anderen Tools, wo sich diese Funktionen verstecken und vielleicht schaffst du es ja dann diese library noch zu installieren.
 
OP
S

soso121155

Newbie
So ich bin jetzt einen Schritt weiter. Die lib lgfortran hat das Gröbste erledigt. Aber irgendwas fehlt immer noch:

# gcc test.f -lgfortran
/usr/lib/gcc/i586-suse-linux/4.0.2/../../../crt1.o: In function `_start':
../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld returned 1 exit status

Habe folgendes versucht:
#apt search libstart
startup-notification - Reference Implementation for the Startup-Notification Protocol
# apt install startup-notification
Reading Package Lists... Done
Building Dependency Tree... Done
startup-notification is already the newest version.
0 upgraded, 0 newly installed, 0 removed and 0 not upgraded.
 
Wenn Du einen Compiler willst, der sich genau so verhält wie der alte g77, dann installier nicht das Paket gcc-fortran, sondern das Paket compat-g77.
soso121155 schrieb:
Suse 10.0 hat den unter 8.0 vorhandenen g77-Compiler nicht mehr.
Das stimmt nicht! SuSE 10.0 hat zwei Fortran-Compiler: Einmal den neuen, aber noch nicht ganz "fertigen" gfortran (Paket gcc-fortran) und einmal den alten g77 (Paket compat-g77).

So installieren:
Code:
rpm -Uvh ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.0-OSS/inst-source/suse/i586/compat-g77-3.3.5-2.i586.rpm
(in einer Zeile)

Und dann so benutzen:
Code:
g77 DEIN_PROGRAMM.f
Beachte: In dem Aufruf nicht "gcc" schreiben ("gcc" zeigt auf den GCC 4.0 mit dem neuen Fortran-Compiler), sondern "g77".

PS: Wenn Du trotzdem lieber den neuen Compiler benutzen willst, wirst Du vermutlich einiges an Deinen Programmen ändern müssen - Siehe auch:

http://gcc.gnu.org/wiki/GFortranG77

Du kannst allerdings beide Compiler gleichzeitig installieren und abwechselnd benutzen.
 
OP
S

soso121155

Newbie
So jetzt bin ich wieder Zuhause. Der gcc-compat geht. Den gcc-fortran hab ich noch nicht zum laufen bekommen.
Auf meiner runtergeladenen Version war übrigens weder der gcc-fortran noch der gcc-compat dabei. Was muss ich denn in yast für zusätzliche Installationsquellen eintragen um an die fehlenden sachen ranzukommen?
 

Grothesk

Ultimate Guru
Du hast doch schon apt drauf? Dann nimm doch apt dafür her. Ist yast eh noch etwas überlegen. Einlöesen in apt solltest du dich halt selber ein wenig.
 
Oben