Irix > Programmieren, Kompilieren

gcc 3.3 auf OCTANE (6.5.01) - Segemtation Failt

(1/4) > >>

christophl:
Hallo liebe Mooder,

habe nach langer Zeit mal wieder meine Octane angeworfen und um die Feiertage zu nutzen um mir C lernen. Ich hatte seinerzeit nie Zeit und keinen gcc auf der Madschine installiert.

Habe mir heute von freeware.sgi.com den die gcc 3.3-tar herunter geladen und auch soweit problemlos installiert.

Testweise habe ich dan versucht folgendes Programm (Eins)

#include <stdio.h>
int main()
{
char me[20];

printf("Was ist Dein Name?");
scanf("%s",&me);
prinf("Schön Dich zu sehen, %s!\n",me);

return(0);
}


mit

gcc /home/krixx/C/Eins -o /home/krixx/C/Eins.c zu kompilieren. Der Vorgang bricht mit einem Segementation Fault ab. Habt Ihr eine Idee woran das liegen kann? Habe auf meiner Maschine nur Irix 6.5.01080747 laufen.

Da  diese Version insgesamt ja schon älter ist meine Vermutung, dass es möglicherweise daran liegen kann. Vor dem Hintergrund die Anschlussfrage, ob es noch eine Quelle gibt, wo ich Updates bekommen kann.

Herzliche Grüße und ein erfolgreiches Jahr 2015  :)

Christoph


 



proxima:
seg faults beim gcc kann viele Gründe haben  ;) . Zum ersten weiss ich nich,gegen welche libc der freeware 3.3 gelinkt ist,das könnte ein Grund sein. Zum zweiten wäre ein Upgrade deiner Octane schon angebracht, dh. die libs und header sind way TOO OOOLD. Drittens kann der gcc selber ein weghaben, wenn er mit komischen Optimierungen läuft. Viertens könnte der Ram ein Problem haben. (Wobei da eher Segfault 11 kommt)

Zum Upgrade: es gab mal im Supportfolio von sgi.com die ISOs von IRIX 6.5.22m. Ob das noch so ist, weiss ich nicht, weil ich zu faul bin, meine Serials dort zu registrieren. Offenbar wollen die unbedingt Support-Verträge verkaufen  :D. Ansonsten findet sich bestimmt ein ftp oder sonstwas,wo man die files mit patch5086 hinschieben kann. (Der ist ZWINGEND notwendig, sonst macht sich der swmgr bzw. inst in die Hose beim Upgrade).

Zum gcc selber (getestet mit 6.5.22m): falls du den cc auf dem System hast (also development header und libs installiert) kannste den auch selber bootstrappen. Mit dem mipspro in /usr/local gnu-make (3.82), gnu-sed (4.2.2), gnu-m4 (1.4.17), gnu-bison(1.875 reicht für den gcc-3.4.6) und gawk bauen,eventuell auch noch libiconv. (gibbet alles auf ftp.gnu.org). dann den gcc-3.4.6 holen und selber bauen  ;D Der gcc mag es sehr,wenn er in einem separaten ObjDIR gebaut wird. Also mkdir gccbuild,  cd gccbuild , ../gcc-3.4.6/configure --disable-nls --enable-weitere-optionen
Für Anpassungen auf gcc.gnu.org in den Manuals lesen.
/usr/local/bin noch in den PATH aufnehmen und freuen.

wenn du auf 6.5.22m updatest, kannst aber auch die nekoware nutzen (was ich persönlich nich tue), da is auch der gcc dabei.

foetz:

--- Zitat von: christophl am 01. Januar 2015, 20:50:33 ---Testweise habe ich dan versucht folgendes Programm (Eins)


--- Code: ---#include <stdio.h>
int main()
{
char me[20];

printf("Was ist Dein Name?");
scanf("%s",&me);
prinf("Schön Dich zu sehen, %s!\n",me);

return(0);
}

--- Ende Code ---

--- Ende Zitat ---
deinem zweiten "printf" fehlt das T. davon abgesehen ist es okay.


--- Zitat ---gcc /home/krixx/C/Eins -o /home/krixx/C/Eins.c
--- Ende Zitat ---
du gibst die falschen dateien an.
du sagst dem compiler er soll die datei /home/krixx/C/Eins kompilieren und die resultierende binary soll /home/krixx/C/Eins.c sein. ich gehe mal stark davon aus du moechtest das andersrum haben :P
zudem wenn sich alles im gleichen ordner abspielt ist es sehr viel netter zu nutzen wenn man in selbigem ist. also daher wie folgt:


--- Code: ---cd /home/krixx/C
gcc -o Eins Eins.c
./Eins

--- Ende Code ---
ein irix 6.5.01 gibt es meines wissens uebrigens nicht. ich denke du meinst 6.5.1.


--- Zitat von: proxima am 02. Januar 2015, 14:51:21 ---falls du den cc auf dem System hast (also development header und libs installiert) kannste den auch selber bootstrappen.
--- Ende Zitat ---
nein, dev header und libs sind voraussetzung fuer alle compiler. der cc (mipspro) selbst ist separat und auch entspr. lizensiert.
abgesehen von der spezialversion zum kernel neu kompilieren in den tiefen von /var aber der ist anderweitig nicht brauchbar.


EDIT: noch ein kleiner kommentar zu deinem programm christophl:
wenn jemand einen namen eingibt der laenger ist als 20 zeichen krachts :P du kannst das umgehen indem du z.b. fgets nutzt statt scanf. die funktionen der scanf familie sind eher zum einlesen von daten die man kennt. z.b. lesen von speziell formatiertem text oder auch netzwerksachen. fgets hat allerdings den nachteil dass es das "neue zeile" spezialzeichen mitnimmt. das musst du dann wieder raushauen. z.b. so:

--- Code: ---#include <stdio.h>
#include <string.h>

main() {
char me[20], *nl;

printf("Was ist Dein Name?");
fgets(me, 19, stdin);
nl = strchr(me, '\n');

if (nl != NULL)
    *nl = '\0';

printf("Schön Dich zu sehen, %s!\n", me);
}

--- Ende Code ---

proxima:

--- Zitat von: proxima am 02. Januar 2015, 14:51:21 ---falls du den cc auf dem System hast (also development header und libs installiert) kannste den auch selber bootstrappen.
--- Ende Zitat ---
nein, dev header und libs sind voraussetzung fuer alle compiler. der cc (mipspro) selbst ist separat und auch entspr. lizensiert.
abgesehen von der spezialversion zum kernel neu kompilieren in den tiefen von /var aber der ist anderweitig nicht brauchbar.


hö? wieder was gelernt. dann frag ich mich aber, wie ich auf meinen systemen zu nem funktionierenden 7.2.1 cc gekommen bin *kopfkratz*, obwohl ich nur Installation, Foundation 1&2, Application und die Development CDs besitze... gleich mal die indy plätten und rausfinden

grüße Rico

foetz:

--- Zitat von: proxima am 03. Januar 2015, 02:33:22 ---die Development CDs besitze
--- Ende Zitat ---
welche sind das genau?

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln