Soru Gcc derlemesi “nesne dosyalarının sonekini hesaplayamaz: derleyemez”


Aslında LFS kitabını okuyorum (sürüm 7.1) ve 53. sayfada bloke oldum. Gcc'yi derlemeye çalışırken aşağıdaki komutu denedim:

./configure --target=$LFS_TGT --prefix=$LFS/build/gcc-build --disable-nls\
--disable-shared --disable-multilib --disable-decimal-float --disable-threads\
--disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath\
--disable-target-libiberty --disable-target-zlib\
--enable-languages=c\
--without-ppl --without-cloog\
--with-mpfr-include=$LFS/source/mpfr/src
--with-mpfr-lib=$LFS/source/mpfr/src/.libs\
--with-gmp-include=/mnt/LFS/source/gmp\
--with-gmp-lib=/mnt/LFS/source/gmp/.libs\
--with-mpc-include=/mnt/LFS/source/mpc/src\
--with-mpc-lib=/mnt/LFS/source/mpc/src/.libs

gcc configure betiğini çalıştırmak için (tabii ki zaten mpfr, mpc ve gmp'yi derledim). Ama başladığımda:

make -j4

Aşağıdaki hatayı alıyorum:

checking for suffix of object files... configure: error: in `/mnt/LFS/source/gcc-4.6.2/x86_64-lfs-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[1]: *** [configure-target-libgcc] Error 1

Bunun için google'ı denedim ve bulduğum çözümleri denedim ama hiçbir şey işe yaramadı. Bu hatayı neden aldığımı bilen var mı?


18
2017-07-16 09:57


Menşei


Yapılandırırken bazı test programlarını derlemeye çalışır. Bu bağlantı yararlı olabilir. - ArjunShankar
Daha fazla bilgi için `config.log 'bölümüne bakın. - İyi tavsiye, bu yüzden hata mesajında. - DevSolar
Bağlantı için teşekkürler. Ama ben her şeyi denedim ve sorunun ne olabileceğine dair hiçbir fikrim yoktu. Bazı forumlar, mpc veya mpfr lib'lerini okumayan bir GCC hatası olduğunu söylüyor. Tekrar araştırmaya çalışacağım. Yine de teşekkürler - E-Kami


Cevaplar:


Bu sorun, test programları libmpc / libmpfr / libgmp dosyasına bağlanmaya çalışırken dyanmic bağlantı kitaplığı yolu sorunu neden olur.

İzin vermek için aşağıdaki ortam değişkenine ekleyin ld doğru bağlantı yani dosya:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/mpc/lib/

Sonra tekrar gcc kurmayı dene.


14
2017-10-23 07:52



Böyle bir yola örnek verebilir misiniz /path/to/mpc/lib/ ya da nasıl bulabilirim? - WebQube
@WebQube Yürütemez misiniz sudo find / -iname "libmpc.so"? Bu yolu bilmenizi veya komutu çalıştırmanızı sağlar whereis libmpc.so veya locate libmpc.so. - enthusiasticgeek
Bunun bir anlamı var - mpc kütüphanesinin varsayılan olarak * nix sistemlerine yüklenmediğini ve bunu manuel olarak yüklemeniz gerekebileceğini biliyorum. configure --prefix=/xx/xx, varsayılan olarak komut dosyası yüklenir /user/local/lib/ - Fei


"* Bina GCC'si önemsiz değildir, ancak talimatları dikkatli bir şekilde izlerseniz zor değildir. Birçok kişi, kurulum belgelerini düzgün bir şekilde okumadan ve bu yaygın hatalardan birini veya daha fazlasını yapmadan onu oluşturmaya çalışıyor.

1) gcc src dir ./configure'u çalıştırmayın (bu desteklenmez) => gcc kaynak dizininin dışındaki yapılandırmayı çalıştırmanız gerekir

2) Not: GCC, önkoşul libs'lerine (GMP / MPFR / MPC) dinamik olarak bağlanırsa, paylaşılan kütüphaneler hem gcc oluştururken hem de kurulu derleyiciyi kullanırken dinamik bağlayıcı yolunda (LD_LIBRARY_PATH) olmalıdır.

Basit örnek (GMP / MPFR / MPC'ye dinamik bağlantı olmadan):

tar xzf gcc-4.8.0.tar.gz
cd gcc-4.8.0
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-4.8.0/configure --prefix=/opt/gcc-4.8.0 
make
make install

Kaynaklar: Advogato Doc - GNU Belgesi


8
2018-04-25 13:04



Dinamik bağlantı olmadan binaya oy ver, gerçekten hayatı kolaylaştırır. - TwilightSun


Bu hata mesajı bir dizi farklı nedenlerden kaynaklanabilir. Aşağıdaki örnekte logfile '/home/manu/gcc/gcc/i686-pc-linux-gnu/libgcc/config.log' dosyasını kontrol etmenin en iyi yolu. Veya orijinal posterler durumunda '/mnt/LFS/source/gcc-4.6.2/x86_64-lfs-linux-gnu/libgcc' ve son hata satırını arayın.

Teklif GCC SSS: http://gcc.gnu.org/wiki/FAQ#configure_suffix

GNU projelerinin herhangi biri gibi GCC de GNU autotools'u   Genel olarak derlemenin özellikleri için derlemeyi yapılandır   sistemi. Yapılandırma betiği bu sayede küçük test programlarını kullanır -   genellikle conftest.c olarak adlandırılır - belirli işlevleri ve / veya   özellikler mevcuttur. Böyle bir test programının derlenmesi   başarısız olursa, şöyle bir hata mesajı görürsünüz:

 checking for suffix of object files... configure: error: in
 `/home/manu/gcc/gcc/i686-pc-linux-gnu/libgcc': configure: error:
 cannot compute suffix of object files: cannot compile See `config.log'
 for more details. make[2]: *** [configure-stage1-target-libgcc] Error
 1 make[2]: Leaving directory `/home/manu/gcc/gcc'

Bu hata mesajı oldukça yanıltıcı ve sık sık sorun var   Mesajla ilgisi yok. Dosyayı kontrol etmelisin   Hatanın oluştuğu dizinde 'config.log'. Örnekte   yukarıda, dizinde 'config.log' dosyasını kontrol etmeniz gerekir   '/ Home / Manu / gcc / gcc / i686-pc-linux-gnu / libgcc'. Birkaç tane olabilir   yapılandırma sırasında başarısız olan test programları, ancak bunlardan bazıları   Hatalar kritik değildir. Dosyadaki son hata girişini kontrol edin.

Bu hata iletisinin genel nedenleri şunlardır:

  • GCC yapısı için gerekli olan kütüphaneler eksiktir, özellikle MPFR,   GMP ve MPC. Paylaşılan kitaplıklar olarak yüklendiyse,   çalışma zamanı linker'ın arama yolu bulunabilsin. Lütfen takip edin   cevabındaki talimatlar neden benim ./configure yapar ve başarısız olur?

  • Derleyici çöktü. Örneğin, bir hata varsa   'conftest.c: iç derleyici hatası:', bu bir hata olduğunu gösterir   derleyici. GCC’nin değiştirilmemiş bir sürümünü kullanıyorsanız, lütfen   hatayı bildirme prosedürü.


3
2018-05-28 20:08