Błąd " gnu/stubs-32.h: No such file or directory " podczas kompilacji kodu źródłowego

[[3]] próbuję zainstalować na swoim laptopie i mam Ubuntu 11.04 na laptopie.

Kod jest w C, więc do jego zbudowania zakładam, że będę potrzebował cross compilera. Tu jest mój problem. Pobrałem kod źródłowy kompilatora MIPS cross używając polecenia

  wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz

I rozpakowałem go używając

tar zxvf mips-decstation.linux-xgcc.gz      

Jest w porządku, ale kiedy próbuję zbudować kod źródłowy systemu operacyjnego, używając make, dostaję ten błąd -

/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. make: *** [bitmap.o] Error 1

Staram się postępuj zgodnie z instrukcjami podanymi tutaj - http://mll.csie.ntu.edu.tw/course/os_f08/217.htm i wszystko działa dobrze, chyba że próbuję użyć make.

Author: VividD, 2011-09-14

11 answers

Brakuje ci 32-bitowego pakietu libc dev:

Na Ubuntu nazywa się libc6-dev-i386-do sudo apt-get install libc6-dev-i386. Zobacz poniżej dodatkowe instrukcje dla Ubuntu 12.04.

On Red Hat distros, Nazwa pakietu to glibc-devel.i686 (dzięki komentarzowi Davida Gardnera).

Na CentOS 5.8, Nazwa pakietu to glibc-devel.i386 (dzięki komentarzowi Jimklecka).

Na CentOS 6 / 7 , Nazwa pakietu to glibc-devel.i686.

On SLES nazywa się glibc-devel-32bit-do zypper in glibc-devel-32bit.

Na Gentoo nazywa się sys-libs/glibc - do emerge -1a sys-libs/gcc [source ] (Uwaga: można użyć equery aby potwierdzić, że jest to poprawne; do equery belongs belongs /usr/include/gnu/stubs-32.h)

Na ArchLinux , Nazwa pakietu to lib32-glibc - do pacman -S lib32-glibc.


Czy używasz Ubuntu 12.04 ? Istnieje znany problem, który umieszcza pliki w niestandardowej lokalizacji . Będziesz również trzeba zrobić:

export LIBRARY_PATH=/usr/lib/$(gcc -print-multiarch)
export C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
export CPLUS_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)

Gdzieś przed zbudowaniem (powiedzmy w Twoje .bashrc).


Jeśli kompilujesz kod C++, będziesz również potrzebował 32-bitowej biblioteki STDC++. Jeśli widzisz to Ostrzeżenie:

.... /usr / bin / LD: nie można znaleźć-lstdc++ ....

Na Ubuntu będziesz musiał zrobić sudo apt-get install g++-multilib

Na CentOS 5 będziesz musiał zrobić yum install libstdc++-devel.i386

Na CentOS 6 będziesz musiał zrobić yum install libstdc++-devel.i686

Prosimy o edycję w pakietach dla innych systemów.

 364
Author: Timothy Jones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-12 14:18:36

Ze strony GNU UPC :

Kompilacja kompilatora nie powiodła się z błędem krytycznym: gnu/stubs-32.h: brak takiego pliku lub katalog

Ten Komunikat o błędzie pojawia się w systemach 64-bitowych, w których GCC / UPC funkcja multilib jest włączona i wskazuje, że wersja 32-bitowa libc nie jest zainstalowana. Istnieją dwa sposoby rozwiązania tego problemu:

  • zainstaluj 32-bitową wersję glibc(np.i686 na Fedorze, CentOS,.)
  • Disable 'multilib' build by supply " -- disable-multilib" włącz polecenie konfiguracyjne kompilatora
 55
Author: ignis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-21 13:10:06

Spróbuj zrobić sudo apt-get install libc6-dev.

apt-file mówi mi, że plik, o którym mowa, należy do tego pakietu.

 9
Author: Keith Layne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-14 07:24:32

To jest teraz w GCC wiki FAQ, zobacz http://gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h

 7
Author: Jonathan Wakely,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-05 08:33:37

Hmm dobrze jestem na ubuntu 12.04 i mam ten sam błąd podczas próby skompilowania gcc 4.7.2

Próbowałem zainstalować pakiet libc6-dev-i386 i dostałem:

Package libc6-dev-i386 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libc6-dev-i386' has no installation candidate

Ustawiam również prawidłowe zmienne środowiskowe w bash:

export LIBRARY_PATH=/usr/lib/$(gcc -print-multiarch)
export C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
export CPLUS_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)

Jednak nadal otrzymywałem błąd, a następnie po prostu skopiowałem stubs-32.h do miejsca, w którym gcc spodziewało się go znaleźć po szybkim Diffie:

vic@ubuntu:/usr/include/i386-linux-gnu/gnu$ diff ../../gnu ./
Only in ./: stubs-32.h
Only in ../../gnu: stubs-64.h
vic@ubuntu:/usr/include/i386-linux-gnu/gnu$ sudo cp stubs-32.h ../../gnu/
[sudo] password for vic: 
vic@ubuntu:/usr/include/i386-linux-gnu/gnu$ diff ../../gnu ./
Only in ../../gnu: stubs-64.h
vic@ubuntu:/usr/include/i386-linux-gnu/gnu$

Właśnie się kompiluje, zobaczmy, czy więcej narzeka ...

 2
Author: Victor Parmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-20 11:23:30

Otrzymałem następujący błąd na Fedorze 18 box:


1. /usr / include / gnu / stubs.h: 7: 27: fatal error: gnu / stubs-32.h: nie zakończono kompilacji takiego pliku lub katalogu.

Zainstalowałem glibc.i686 i glibc-devel.i686, następnie kompilacja nie powiodła się z następującym błędem:

2. /usr / bin/ ld: pomijanie niekompatybilnego / usr / lib / gcc / x86_64-redhat-linux/4.7.2 / libgcc_s.więc podczas wyszukiwania-lgcc_s /usr / bin/ ld: cannot find-lgcc_s collect2: error: ld returned 1 exit status

Rozwiązanie:

Zainstalowałem (yum install) glibc.i686 glibc-devel.i386 i libgcc.i686 aby pozbyć się problemu z kompilacją.

Teraz Kompilacja dla 32 bitów (-M32) działa dobrze.

 2
Author: user2223366,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-29 05:57:56

FWIW, śmierdzi błędem (a przynajmniej potencjalnym źródłem przyszłego bólu) używanie plików z /usr/include podczas kompilacji krzyżowej.

 0
Author: user47559,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-14 19:08:25

gnu/stubs-32.h nie jest kierowane zawarte w programach. Jest to plik nagłówkowy typu back-end gnu/stubs.h, podobnie jak gnu/stubs-64.h. Możesz zainstalować multilib pakiet, aby dodać oba.

 0
Author: user2775212,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-13 06:00:15

# sudo apt-get install g++ - multilib

Powinien naprawić ten błąd na 64-bitowych maszynach (Debian / Ubuntu).

 0
Author: skrishnakar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-30 15:31:16

Jeśli napotkasz ten problem w Mac-OSX terminal z Pythonem, spróbuj zaktualizować wersje pakietów, których używasz. Przejdź więc do plików w Pythonie i tam, gdzie określono Pakiety, zaktualizuj je do najnowszych wersji dostępnych w Internecie.

 0
Author: D.Bhatia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-20 22:25:14

Na Debianie/Ubuntu użyj:

sudo apt-get install g++-multilib libc6-dev-i386

 0
Author: Keivan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-08 20:41:08