Portál AbcLinuxu, 5. května 2025 16:38
Ja v nom vidim toto:
configure:2212: gcc conftest.c >&5
/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-sla
ckware-linux/bin/ld:
crt1.o: No such file: No such file or directory
collect2: ld returned 1 exit status
Co znamena, ze najskor nemas nainstalovany subor crt1.o, ktory obsahuje balik glibc
C compiler cannot create executables
hmm, mám teď stejnej problém :(
Mám glibc-2.3.5.20050722, práva k zápisu, Gentoo Linux 2005.0 a prostředí KDE 3.4.2... jenže nevím kam se ten config.log uloží ... nikde ho tu nemám :( nemůžu zkompilovat nic trochu složitějšího... třeba Kopete, MLDonkey, KDEjava ... prostě nic. Prosím lidi, nevíte někdo ? :( Myslím, že to začalo tm, jak jsem zkompilil novou glibc... ale když se pokouším zkompilovat tu 2.3.5-r1, tak to hodí pro změnu: checking size of long double... configure: error: cannot compute sizeof (long double), 77
See `config.log' for more details.
Předem dík všem ochotným lidem :)
checking for C compiler default output file name... configure: error: C compiler cannot create executables
configure
find / -type f -name "config.log"
locate
, ale nic...
No tak tady to je (kompilace Kopete)... kdybyste to někdo omrknul a poradil, byl bych nesmírně vděčný :)
locate
vám ten soubor celkem pochopitelně nemůže najít, protože nepracuje s obsahem filesystému ale s databází, kterou mu nějaký skript čas od času (obvykle jednou denně) vygeneruje. Pokud chcete opravdu najít nějaký soubor, je vhodnější použít find
updatedb
) tak jsem myslel, že je to jedno. Btw, zrovna po tom jsem ji aktualizoval, ale stejně nic...
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.4/../../../../x86_64-pc-linux-gnu/bin/ld:/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.4/../../../../lib64/libc.so: file format not recognized; treating as linker scriptS tímhle si taky nevím rady, s 64-bitovými systémy nemám žádné zkušenosti. Nepomíchaly se nějak 32-bitové knihovny se 64-bitovými? A co překladač? Ten asi bude 64-bitový podle toho výpisu.
emerge sync
, vidět všechny ty updaty a být bezmocnej ? ./configure; make; make install
zapomněl jsem na něco ?
README
, INSTALL
, ./configure --help
, něco v ./doc/
atd. Pak je dobré nastavit správně CFLAGS
a CPPFLAGS
, zapnout optimalizace (třeba pro mě: CFLAGS="-O3 -march=pentium2 -fomit-frame-pointer -fPIC"
), podívat se na gcc -v
, pokud máte víc překladačů, teprve potom spustit make
, i když někdy se musí dopsat nějaké další parametry (to bývá většinou u programu napsáno). Potom je dobré ověřit, jestli program umí make uninstall
, jestli ví, co je to DESTDIR
, INSTALL_ROOT
atd. a teprve potom spustit instalaci. Můj oblíbený příkaz je make DESTDIR=/tmp/něco install
, z toho udělám .tar.bz2
balíček a až pak instaluju. Zároveň to umožňuje pohodlnou odinstalaci. Když nefunguje DESTDIR
, pomůže většinou přepsat PREFIX
či prefix
.
To není ještě by se toho dalo napsat hodně, nebudu to však přehánět. [dancelis@xeonix ~/k3b-0.12.3] $ ./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for -p flag to install... yes
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for kde-config... /usr/kde/3.4/bin/kde-config
checking where to install... /usr/kde/3.4 (as returned by kde-config)
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... configure: error: C compiler cannot create executables
See `config.log' for more details.
#include <stdio.h> int main() { printf("Já jedu!\n"); return 0; }Uložte to jako
něco.c
a přeložte: gcc -o něco něco.c
. Napíše to určitě chybu. Pokud ne, přejmenujte soubor na něco.cc
a přeložte jako C++: g++ -o něco něco.cc
.
libc.co
nepatří k použitému překladači gcc
. Napište, jakou máte verzi překladače (gcc -v
), potom ještě pošlete výpis readelf -h /usr/lib64/libc.so
.
/usr/lib64/libc.co
je jakýsi skript. Pošlete sem jeho obsah. Také se podívejte, kde je opravdová knihovna. Mohlo by to být něco jako /lib64/libc.so.6
, ale kdo ví, kde to v Gentoo bude. Určitě to bude začínat libc
a bude tam někde .so
.
lrwxrwxrwx 1 root root 14 čec 31 13:18 libc.so.6 -> libc-2.3.90.so
readelf -h
na tuhle knihovnu. Potom taky přidejte výpis z tohoto příkazu: ld --help | grep "supported targets"
.
/usr/lib64/libc.so
, místo něj udělat symbolický odkaz na /lib64/libc.so.6
a přeložit znovu ten krátký program, pro změnu však takto:
gcc -o něco něco.c /usr/lib64/libc_nonshared.a
emerge k3b
, ale to pořád krachuje...
/usr/lib64/libc_nonshared.a
. S tím ale něco musí jít udělat. Dočasně by snad pomohlo nastavit proměnnou prostředí LDFLAGS="/usr/lib/libc_nonshared.a"
.
rm /usr/lib64/libc.so cat > /ust/lib64/lib.so << EOF /* GNU ld script Use the shared library, but some functions are only in the static library, so try that secondarily. */ OUTPUT_FORMAT(elf64-x86-64) GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a ) EOF
rm /usr/lib64/libc.so cat > /usr/lib64/lib.so << EOF /* GNU ld script Use the shared library, but some functions are only in the static library, so try that secondarily. */ OUTPUT_FORMAT(elf64-x86-64) GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a ) EOFNení tam
/ust/lib64...
, ale /usr/lib64...
.
gcc -o něco něco.c
bez přidání /usr/lib64/libc_nonshared.a
, nebo to pořád píše, že libc.so
není v pořádku?
LD=`which ld` mv $LD $LD.bin echo -ne "#\x21/bin/bash\n$LD.bin \"\$@\" /usr/lib/libc_nonshared.a" > $LD chmod 755 $LD unset LDBylo by dobré přeložit znova binutils, gcc a glibc, ať už s těmito opatřeními, nebo bez nich. Když to nepůjde, bude nutné sehnat tyto věci z jiného zdroje, nebo rovnou přeinstalovat celý systém.
./configure && make && make install
, tj. když se jedno pokazi, už se nepokračuje (proto &&
). Dá se nastavit prefix, tj. kam se to nainstaluje, tady je malý příklad: ./configure --prefix=/opt/gcc-4.0.1
.
glib
a hodilo to chybu.. připojit se na mě přes SSH by šlo asi těžko - nemám veřejnou IP. Začíná mě to děsit.. asi abych poprosil někoho s 64-bit Athlonem a Gentoo o gcc-3.4.4kou zkompilovaný glib, glibc a binutils.. Tak jestli se někdo takovej najde a bude ještě ke všemu ochotnej, tak ať napište na moji mailovku dancelis@centrum.cz a já vám řeknu login na moje ftpko.. nebo jestli máte vlastní.. A nebo jestli máte někdo ještě nějakej nápad.. jsem celkem vyplašenej
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.