crti.o'yu bulamıyor: Böyle bir dosya veya dizin yok

17

gcc 4.1.2'yi ( ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar.bz2 ) benim ubuntu 12.04 (x86_64). Mevcut aktif gcc 4.6.2'dir. Yaptım:

./configure

make

Ancak bu hatayı alıyorum

/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: ld returned 1 exit status

Web'de arama yaparken crti konumunun bulunduğu bir sorun var gibi görünüyor. Bu dosyalar sistemde mevcut

# find /usr/ -name crti*
/usr/lib32/crti.o
/usr/lib/x86_64-linux-gnu/crti.o
/usr/lib/debug/usr/lib/x86_64-linux-gnu/crti.o

Ayrıca libc6 devel paketi yüklüdür

# dpkg -l | grep libc6
ii  libc6                                  2.15-0ubuntu10.3                          Embedded GNU C Library: Shared libraries
ii  libc6-dbg                              2.15-0ubuntu10.3                        Embedded GNU C Library: detached debugging symbols
ii  libc6-dev                              2.15-0ubuntu10.3                        Embedded GNU C Library: Development Libraries and Header Files
ii  libc6-dev-i386                         2.15-0ubuntu10.3                        Embedded GNU C Library: 32-bit development libraries for AMD64
ii  libc6-i386                             2.15-0ubuntu10.3                        Embedded GNU C Library: 32-bit shared libraries for AMD64
ii  libc6-pic                              2.15-0ubuntu10.3                        Embedded GNU C Library: PIC archive library

Bunu nasıl düzeltebilirim?

GÜNCELLEME:

Bunları ekledikten sonra

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH 

Bu sorun çözüldü. Ancak şimdi aldım

/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc
/usr/bin/ld: i386:x86-64 architecture of input file '/usr/lib/x86_64-linux-gnu/crti.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file '/usr/lib/x86_64-linux-   gnu/crtn.o' is incompatible with i386 output
collect2: ld returned 1 exit status
    
sordu mahmood 06.02.2013 14:50

4 cevap

10

Bu, launchpad'de bildirilen bir BUG , bir geçici çözüm var:

32 bit platformunda 64 bit programı derleme:

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH

32 bit yerel:

LIBRARY_PATH=/usr/lib32:$LIBRARY_PATH
export LIBRARY_PATH

.bashrc dosyanızda (veya bir konsoldan çalıştırıldığında), GCC'nin kütüphanenin yeni yerini bulması yeterlidir.

thx. Doğru yönde işaret etmek için Iain Buclaw (ibuclaw).

12.10 32 bit

[email protected]:~$ sudo find /usr/ -name crti*
/usr/lib/i386-linux-gnu/crti.o
[email protected]:~$ 

LIBRARY_PATH=/usr/lib/i386-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH

12.10 64 bit

[email protected]:~$ sudo find /usr/ -name crti*
/usr/lib/x86_64-linux-gnu/crti.o
[email protected]:~$ 

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH
    
verilen cevap hhlp 06.02.2013 19:39
1

Benim durumum Ubuntu 16.04 'si hiç% co_de değerinde hiç yok:

$ find /usr/ -name crti*

Bu yüzden geliştirici paketini yüklüyorum:

sudo apt-get install libc6-dev
    
verilen cevap Eugen Konkov 19.10.2016 13:21
0

Yukarı akışlı kaynaklardan gelen x86-64 üzerinde GCC 4.8'i yapılandırarak, hem 32 hem de 64 bitlik kütüphaneler oluşturmaya gereksinim duyuyorsunuz (çoklu kütüphane devre dışı bırakılmadıkça). Bu durumda, her iki yolu da /usr/lib/x86_64-linux-gnu ve /usr/lib32 eklemeniz gerekir.

    
verilen cevap John Vreeland 16.04.2013 13:18
0

Ubuntu makinemde gcc'nin eski bir sürümünü de yapıyorum (4.6.3'teki bir makinede 3.4.6)
@ Mahmood'un --disable-multilib çözümünü denedim, ancak gcc 3.4.6'yı kullanmam için gereken paket de 32 bitlik kütüphaneye ihtiyaç duyuyordu.

Böylece hem 64 bit hem de 32 bit kitaplıklarını LIBRARY_PATH olarak ekledim

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib32:$LIBRARY_PATH 
export LIBRARY_PATH 

Ah ve ben Ubuntu'da yaşıyorum 12.04 64 bit

    
verilen cevap Heartinpiece 13.01.2014 07:30

Etiketlerdeki diğer soruları oku