mood-indigo.org - Das unabhängige Silicon Graphics User Forum
Irix => Programmieren, Kompilieren => Thema gestartet von: wiel am 30. Juni 2003, 15:15:33
-
Hallo Alle miteinader,
ich habe folgendes Problem auf einer Indy R5000, Irix6.5.19 Standartinstallation, gcc-3.2.2 GNU Compiler Suite von SGI-Freeware installiert, und als einzige Aenderung folgende Zeilen in die /etc/profile bzw /etc/cshrc aufgenommen:
/etc/profile
PATH=/usr/freeware/bin:/usr/local/bin:$PATH
export PATH MANPATH
/etc/cshrc
setenv PATH /usr/freeware/bin:${PATH}
Beim Versuch TCL zu uebersetzen bekomme ich nun folgendes zu sehen:
-bash-2.05b$ cd inst/tcl8.4.3/unix/
-bash-2.05b$ ./configure
creating cache ./config.cache
checking whether to use symlinks for manpages... no
checking compression for manpages... no
checking for gcc... gcc
checking whether the C compiler (gcc ) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.
-bash-2.05b$ echo $PATH
/usr/freeware/bin:/usr/local/bin:/usr/freeware/bin:/usr/local/bin:/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11:
-bash-2.05b$ which gcc
/usr/freeware/bin/gcc
Der gcc ist also da und wird auch gefunden wie der which-Befehl zeigt. Allerdings habe ich keine Ahnung, wie ich ihn zur Arbeit ueberreden kann.
-
Hi,
was steht denn in der config.log Datei in der Gegend, wo die Fehlermeldung kommt?
-
-bash-2.05b$ cat config.log
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
configure:575: checking whether to use symlinks for manpages
configure:587: checking compression for manpages
configure:615: checking for gcc
configure:728: checking whether the C compiler (gcc ) works
configure:744: gcc -o conftest conftest.c 1>&5
Fatal error: Arg list too long
configure: failed program was:
#line 739 "configure"
#include "confdefs.h"
main(){return(0);}
-bash-2.05b$
und in der benannten zeile des configure-skripts steht von Zeile 735 an:
cat > conftest.$ac_ext << EOF
#line 739 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
if { (eval echo configure:744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
ac_cv_prog_cc_cross=no
else
ac_cv_prog_cc_cross=yes
fi
else
echo "configure: failed program was:" >&5
-
Strange. Für mich sehen sowohl Compileraufruf wie auch Testprogramm einwandfrei aus. Tut der GCC denn sonst überhaupt? Erstell doch mal eine einzelne Datei mit Inhalt
main(){return(0);}
und nudel die mit gcc -v -o testdatei testdatei.c durch den Compiler. Das sollte Dir Aufschluss drüber geben, was wann wo vom GCC aufgerufen und vielleicht nicht gefunden wird (Vielleicht fehlender as oder cpp???). Ich hab's gerade ausprobiert, läuft bei mir fein (Indy mit R4k, GCC 3.2.2, Irix 6.5.19).
-
Ich habe mich ja vor dem Programmieren bis jetzt erfolgreich ferngehalten.
Also eine Datei test angelegt (mit dem main Aufruf)
-bash-2.05b$ gcc -v -o test test.c
Fatal error: Arg list too long
-bash-2.05b$
-
Für mich sieht das so aus, als ob was bei der Compiler-Installation beschädigt wäre. Die Kommandozeile für den gcc ist eigtl. nicht zu lang, und spezielle Libraries braucht das Ding eigentlich auch nicht. Es tauchen zwischendrin beim Compilieren allerdings schon recht lange Aufrufe auf, die hätte man eben mit dem -v Flag sehen können. Tut denn wenigstens "gcc -v" (ohne weitere Optionen)? Ansonsten gib mal
"systune ncargs" ein, vielleicht ist die Länge der Kommandozeile bei Dir ja (warum auch immer) stark beschränkt.
Nachtrag: Hier ist ein Blurb aus dem Usenet, der auch dazu passt:
http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&threadm=9ii2fa%24sed%241%40news.netmar.com&rnum=5&prev=/groups%3Fhl%3Dde%26lr%3D%26ie%3DISO-8859-1%26q%3Dgcc%2Barg%2Blist%2Btoo%2Blong
Vielleicht machst Du das mit dem Path auch mal rückgängig und rufst den Compiler explizit mit /usr/freeware/bin/gcc auf?
-
Danke erstmal fuer die Hilfe, ich habe meinen Pfad des Wissens laengst verlassen und kann nur noch nachtippen.
-bash-2.05b$ cat test
main(){return(0);}
-bash-2.05b$ gcc -v test test.c
Fatal error: Arg list too long
-bash-2.05b$ systune ncargs
ncargs = 20480 (0x5000)
-bash-2.05b$
Wieland
-
Systune sieht gut aus, denke ich. Kannst Du mal nur gcc -v (ohne -o test test.c) ausführen? Auch mal ohne PATH in der /etc/profile erweitert? Dein C-Programm ist eigentlich einwandfrei, der Fehler kommt auch nicht vom compilieren.
-
-bash-2.05b$ /usr/freeware/bin/gcc -v test test.c
gcc ERROR: gcc is not installed in /usr/freeware/bin/../../usr/lib32/cmplrs/gcc
-bash-2.05b$
-bash-2.05b$ ls -l /usr/freeware/bin/ | grep gcc
lrwxr-xr-x 1 root sys 3 Apr 22 13:29 egcs -> gcc
-rwxr-xr-x 4 root sys 98676 Mai 15 14:00 gcc
-rwxr-xr-x 1 root sys 15613 Apr 22 13:29 gccbug
lrwxr-xr-x 1 root sys 3 Apr 22 13:29 mips-sgi-irix6.5-gcc -> gcc
-bash-2.05b$ ls -l /usr/lib32/cmplrs/ | grep gcc
-rwxr-xr-x 4 root sys 98676 Mai 15 14:00 gcc
-bash-2.05b$
Der zweite Tipp scheint ein Treffer zu sein. Ich werde wohl die gcc Pakete im Softwaremanager loeschen und komplett neu installieren. Ich glaube, das waren fast 80 MB, schauen wir mal wie schnell der SGI-FTP-Server heute ist.
Wenn ich den Pfad uebrigens rausnehme, findet er den MIPS cc und muellt den Bildschirm mit Lizenzgesabber voll. Bringt mich also auch nicht unbedingt weiter
-
noch als Nachtrag
-bash-2.05b$ gcc -v
Fatal error: Arg list too long
-bash-2.05b$
-
Hmpf, in /usr/lib32/cmplrs/ sollte der gcc überhaupt nicht auftauchen. Vielleicht reicht es, wenn Du ihn dort einfach löscht. (Bevor Du das ganze Paket nochmal runterlädst) Hast Du das selbst installiert, oder war der schon vorher drauf? Mein gcc sucht übrigens in folgenden Verzeichnissen:
cc1, cpp, collect2 in /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.2.2/
as, asm (nicht gcc!) in /usr/bin und /usr/lib32/cmplrs/ - würde ich auf jeden Fall schauen, dass die auch da sind!
-
Ich weisz zwar nicht wieso, ich bekomme jetzt bei auskommentierten Pfadangaben folgendes zu sehen:
-bash-2.05b$ echo $PATH
/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11:
-bash-2.05b$ cd inst/tcl8.4.3/unix/
-bash-2.05b$ ./configure
loading cache ./config.cache
checking whether to use symlinks for manpages... no
checking compression for manpages... no
checking for gcc... gcc
checking whether the C compiler (gcc ) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.
-bash-2.05b$ gcc -v
Fatal error: Arg list too long
Ansonsten fehlt einmal der asm und statt cpp habe ich einmal cpp0 nach Deiner Liste
-bash-2.05b$ ls /usr/bin/ | grep as
as
asa
assign
basename
icrash
passwd
paste
thrash
ypchpass
yppasswd
-bash-2.05b$ ls /usr/lib32/cmplrs/ | grep as
as
asm
-bash-2.05b$ ls /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.2.2/ | grep cc1
cc1
cc1obj
cc1plus
-bash-2.05b$ ls /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.2.2/ | grep cpp
cpp0
tradcpp0
-bash-2.05b$ ls /usr/freeware/lib/gcc-lib/mips-sgi-irix6.5/3.2.2/ | grep coll
collect2
Sollte da ein einfaches Rueberkopieren reichen?
-
Sorry, nein, muss cpp0 sein, cpp gibt's in /usr/freeware/bin, asm nur in /usr/lib32..., das ist also alles OK. Der Fehler mit auskommentierter Pfadangabe liegt wohl daran, dass der GCC in /usr/lib32/cmplrs und womöglich noch woanders gefunden wird, das darf aber nicht sein (es hätte jetzt m.E. irgendetwas wie gcc not found bzw. der vergebliche Versuch, den MipsPro zu verwenden, kommen müssen). Ich blicke da leider auchnie ganz durch, wo SGI die ganzen Development-Komponenten verteilt.
Wie sieht dein Pfad denn jetzt aus, ist da immer noch /usr7Freeware/bin mit drin (wundert mich, dass das ganz zu Anfang zweimal drin war...)
-
Der letzte Shellmitschnitt entstammt dem Versuch mit auskommentierten Pfadangaben.
Den gcc in /usr/lib32/ habe ich wieder geloescht , glaube den hatte ich selber dorthinkopiert, aufgrund irgendeines Postings in einer anderen Newsgroup. Andere Veraenderungen im System hatte ich aber nicht vorgenommen.
Bei den Pfadangaben habe mich nach Obsolet... gerichtet, ich glaube die Macher sitzen hier auch irgendwo im Forum, besten Dank dann auch, falls Ihr es lest - ist fuer Einsteiger bei IRIX ein gute Seite. Ist halt fuer beide Shells, obwohl man heute mit der BASH arbeitet,wenn man sie hat.
-
Hi, ich denke, dass /usr/freeware/bin noch woanders in deinen Pfad gesetzt wird (weil in deinem ersten Posting
PATH=/usr/freeware/bin:/usr/local/bin:/usr/freeware/bin:/usr/local/bin:/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11:
aber in /etc/profile nur PATH=/usr/freeware/bin:/usr/local/bin:$PATH
Setz mal explizit
export PATH=/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11 (sollte die Standard-Einstellungen wieder bringen)
und probier dann nochmal gcc -v. Wenn's dann nicht gefunden wird, mach mal /usr/freeware/bin/gcc -v.
Achso, zwischen zwei configure-Aufrufen löscht Du besser die Datei config.cache. Obsolet ist gut, das ist wahr :-)
-
Also inzwischen sind die erweiterten Pfade wieder drin - nur um sie wieder zu deaktivieren.
-bash-2.05b$ echo $PATH
/usr/freeware/bin:/usr/local/bin:/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11:
-bash-2.05b$ export PATH=/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11
-bash-2.05b$ gcc -v
gcc ERROR: gcc is not installed in /usr/lib32/cmplrs/gcc
-bash-2.05b$ /usr/freeware/bin/gcc -v
gcc ERROR: gcc is not installed in /usr/freeware/bin/../../usr/lib32/cmplrs/gcc
-bash-2.05b$ cd inst/tcl8.4.3/unix/
-bash-2.05b$ rm config.cache
-bash-2.05b$ ./configure
creating cache ./config.cache
checking whether to use symlinks for manpages... no
checking compression for manpages... no
checking for gcc... gcc
checking whether the C compiler (gcc ) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.
-
wenn im ersten Posting das /usr/freeware/bin mehrmals aufgetaucht ist, habe ich das wohl falsch rueberkopiert
-
Sieht ganz so aus, als würde bei dir noch woanders im Pfad eine Version des gcc rumgeistern, statt gcc ERROR: gcc is not installed in /usr/lib32/cmplrs/gcc müsste jetzt nämlich eigentlich gcc: not found kommen. Schau mal alle Verzeichnisse in verkürzten PATH durch
-
Du hattest Recht , in usr/bin war noch ein gcc versteckt. Habe ich geloescht.
Ohne erweiterten Pfad lauft configure jetzt durch allerdings mit dem cc, das make bricht dann mangels Lizenz ab.
Mit Pfaderweiterung habe ich das alte Problem
-bash-2.05b$ echo $PATH
/usr/freeware/bin:/usr/local/bin:/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11:
-bash-2.05b$ cd inst/tcl8.4.3/unix/
-bash-2.05b$ ./configure
creating cache ./config.cache
checking whether to use symlinks for manpages... no
checking compression for manpages... no
checking for gcc... gcc
checking whether the C compiler (gcc ) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.
-bash-2.05b$ gcc -v
gcc ERROR: gcc is not installed in /usr/lib32/cmplrs/gcc
-bash-2.05b$ su
Password:
# cp /usr/freeware/bin/gcc /usr/lib32/cmplrs/gcc
# exit
exit
-bash-2.05b$ gcc -v
Fatal error: Arg list too long
-bash-2.05b$
./configure
mit gleicher Fehlermeldung wie oben, aber trotzdem Danke Danke fuer Deine Muehe
-
Naja, ist doch auch schon mal was, ausser in /usr/freeware gibt's jetzt wenigstens keinen gcc mehr. Ich blicke allerdings auch nicht, weshalb Komponenten vom gcc in /usr/lib32 gesucht werden. Jedenfalls, wenn Du den gcc dann noch dahin kopierst, scheint er sich immer wieder selbst aufzurufen, was dann irgendwann zu "arg list too long" fuehrt, das geht also sicher nicht :-( Sieht fuer mich irgendwie so aus, als ob das eine krude Mischung aus MipsPro und gcc waere. Ist vielleicht noch irgendwo cc auf gcc verlinkt (letzte Hoffnung...)?
Uebrigens, selbst wenn ich /usr/freeware/lib/gcc-lib komplett wegmove und deine Umgebung soweit reproduziere, erhalte ich Deinen Fehler nicht. Ich weiss halt nicht, ob es viel hilft, in die Umgebung das gcc-Paket neu reinzuinstallieren, oder ob's noch schlimmer davon wird :-(
-
-bash-2.05b$ cd /bin
-bash-2.05b$ ls -l | grep cc
-rwxr-xr-x 1 root sys 81476 Apr 14 16:52 acctcvt
-rwxr-xr-x 3 root sys 98676 Mai 15 14:00 cc
lrwxr-xr-x 1 root sys 17 Apr 14 16:24 cc.orginal -> ../lib/driverwrap
-rwxr-xr-x 3 root sys 98676 Mai 15 14:00 gcc.bak
-rwxr-xr-x 1 root sys 82528 Apr 14 16:51 yacc
-bash-2.05b$ ls -l | grep gcc
-rwxr-xr-x 3 root sys 98676 Mai 15 14:00 gcc.bak
bash-2.05b$ ls -l /usr/bin/ | grep cc
-rwxr-xr-x 1 root sys 81476 Apr 14 16:52 acctcvt
-rwxr-xr-x 3 root sys 98676 Mai 15 14:00 cc
lrwxr-xr-x 1 root sys 17 Apr 14 16:24 cc.orginal -> ../lib/driverwrap
-rwxr-xr-x 3 root sys 98676 Mai 15 14:00 gcc.bak
-rwxr-xr-x 1 root sys 82528 Apr 14 16:51 yacc
-bash-2.05b$ ls -l /usr/freeware/bin/ | grep cc
lrwxr-xr-x 1 root sys 14 Apr 23 07:25 disable -> ../sbin/accept
lrwxr-xr-x 1 root sys 3 Apr 22 13:29 egcs -> gcc
-rwxr-xr-x 1 root sys 22304 Apr 23 07:57 ellcc
lrwxr-xr-x 1 root sys 14 Apr 23 07:25 enable -> ../sbin/accept
-rwxr-xr-x 3 root sys 98676 Mai 15 14:00 gcc
-rwxr-xr-x 1 root sys 15613 Apr 22 13:29 gccbug
lrwxr-xr-x 1 root sys 3 Apr 22 13:29 mips-sgi-irix6.5-gcc -> gcc
lrwxr-xr-x 1 root sys 8 Mai 16 08:46 objc -> .objc.cc
-rwxr-xr-x 1 root sys 14220 Juni 23 12:08 rleccube
Das scheint ja soweit sauber zu sein. Meiner Meinung nach kommen andere Verzeichnisse nicht mehr in Frage.
Ich probiere es dann mal mit einem Neueinspielen der Pakete ???
-
Also was ich ja komisch finde: in /usr/bin hat der cc genau dieselbe Groesse und das Datum wie der gcc, und der cc.orig zeigt auf ../driverwrap, wie sich's eigentlich fuer den MipsPro gehoeren wuerde. Ebenso in /bin. Sieht fuer mich so aus, als haette man versucht, auf die Weise den MipsPro durch den gcc zu ersetzen. Vermutlich schlaegt dann jetzt naemlich auch irgendwie der Lizenzmanager zu??? Deshalb die komische Fehlermeldung - das ist jetzt Spekulation, aber das mit dem cc in /usr/bin gehoert bestimmt nicht so (wirst Du dann auch mit Neuinstallation nicht los) Du koenntest die fraglichen Dateien jetzt auch wegmoven, aber moeglicherweise sind noch mehr solche Sachen vorhanden...
-
Um das Thema abzuschlieszen, ich habe den gcc mit dem Softwaremanager entfernt, dann per Hand allles was die gleiche Groesze wie der gcc hatte und irgendwie cc im Namen trug auf dem Rechner geloescht und nach einem Reboot letztendlich neu installiert.
Und Wunderwelt der Technik - es funktioniert. Danke nochmal!!!