2013-10-28 8 views
7

Ich habe einen Cross-Compiler in meinem Home-Ordner auf Ubuntu 13.10 (64-Bit). Ich habe es heruntergeladen here am Ende der Seite, wo es heißt "Prebuilt Toolchains". Wenn ich versuche, etwas zu kompilieren es gibt mir diese:cc1: Fehler beim Laden von gemeinsam genutzten Bibliotheken: libmpc.so.2: kann keine gemeinsame Objektdatei öffnen: Keine solche Datei oder Verzeichnis

cc1: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory 

Nach ein wenig goggling ich this gefunden. Ich habe die Befehle ausprobiert, die der Autor eingegeben hat; aber sie werden mir nicht helfen, da ich dieses Problem mit einem Cross-Compiler aus dem Home-Wörterbuch habe, nicht mit dem System-Compiler. Kann jemand helfen?

EDIT: Hier ist die Datei, die ich auf Cross-Kompilierung versuchen:

void print(char *message, int line,int ch){ 
    char *vm=(char *)0xb8000; 
    int i=(line*80*2); 
    i=i+(ch*2); 
    while(*message!=0){ 
    if (*message=='\n'){line++; 
    i=(line*80*2);} 
    else {vm[i]=*message; 
    i++; 
    vm[i]=0x07; 
    i++;} *message++;}} 

void kernel_main(){ 
print("Hello!\nHow do you like my kernel?",0,0);} 

ich auch eine Baugruppendatei geschrieben in AT & T-Syntax, die kernel_main() aufruft.

+1

Können Sie bitte genauer an? Welcher Cross-Compiler, welcher Befehl du verwendest, welches System du verwendest, usw. – Josh

+0

Ich habe gerade einen anderen Cross-Compiler von der gleichen Stelle heruntergeladen, und es tut dasselbe. Sollte ich Fedora anstelle von Ubuntu ausprobieren? Oder ist das einfach so? –

+0

Ich habe es gerade auf Fedora versucht und es hat auch nicht funktioniert. Kann jemand den i386-elf Cross-Compiler von os-dev.org auf seiner Hardware ausprobieren? Vielleicht ist es nur mein Computer, der dieses Problem aus irgendeinem Grund hat. –

Antwort

8

verschwunden Mein Fehler, nachdem ich die folgenden Befehle erteilt hatte:

export LD_LIBRARY_PATH="/usr/local/lib" 
sudo ldconfig 

ldconfig die Magie ist.

+0

libstdC++.so.6.0.20-gdb.py ist keine ELF-Datei - es hat die falschen magischen Bytes beim Start. –

1

Konnten Sie libmpc.so.3 in/usr/lib oder/usr/lib64 finden? Wenn Sie es oder dasselbe gefunden haben, müssen Sie es durch die Datei libmpc.so.2 ersetzen. Diese Datei kann in verschiedenen Linux-Versionen tiefer gefunden werden.

+1

In meinem Fall habe ich nur libmpc.so.2 mit libmpc.so.3 verbunden und neu kompiliert und das scheint auch zu funktionieren. :-) – tudor

0

Version 2 von libmpc (d. H. Libmpc.2.dynlib) wird aus den Versionen 0.7 - 0.9 der Quelle erstellt (die Download-Archive finden Sie unter www.multiprecision.org). Versionen, die älter als 0.9 sind, scheinen mit neueren Versionen von GMP nicht kompatibel zu sein, also würde ich versuchen, das zuerst zu bauen. Ich konnte und 0.9 auf meinem OsX El Capitan-System nach gcc Installation 4.8, gmp und mpfr verwenden bauen:

brew tap homebrew/versions 
brew install gcc48 
brew install gmp 
brew install mpfr 

Dann in dem mpc-0,9 dirctory:

./configure --with-gmp=/usr/local/Cellar/gmp/6.1.0 --with-mpfr=/usr/local/Cellar/mpfr/3.1.3 
make 
sudo make install 
0

I cc1: error while loading shared libraries: libmpc.so.2 gelöst folgt:

libmpc3 über Repo installieren und Symlink machen (dirty-Methode, aber gearbeitet):

sudo apt-get install libmpc* 

oder (wenn Werkzeugkette für i386):

sudo apt-get install libmpc*:i386 

in /usr/lib/i386-linux-gnu für i386 oder in /usr/lib/x86_64-linux-gnu für amd64:

sudo ln -s libmpc.so.3.0.0 libmpc.so.2