Ubuntu 13.10(64ビット)のホームフォルダーにクロスコンパイラーがあります。ダウンロードしました ここ ページの下部に「ビルド済みツールチェーン」と表示されています。私が何かをコンパイルしようとすると、それは私にこれを与えます:
cc1: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory
少しゴーグルした後、私は this を見つけました。著者が書いたコマンドを試してみました。しかし、システムコンパイラではなく、ホームディクショナリのクロスコンパイラでこの問題が発生しているため、これらは役に立ちません。誰か助けてもらえますか?
EDIT:これが私がクロスコンパイルしようとしているファイルです:
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);}
また、kernel_main()を呼び出すAT&T構文で記述されたアセンブリファイルがあります。
次のコマンドを発行した後、エラーが消えました。
export LD_LIBRARY_PATH="/usr/local/lib"
Sudo ldconfig
ldconfig
は魔法です。
/ usr/libまたは/ usr/lib64にlibmpc.so.3がありますか?それまたは同じものを見つけた場合は、libmpc.so.2ファイルに置き換える必要があります。そのファイルは、より低いLinuxバージョンで見つけることができます。
解決しましたcc1: error while loading shared libraries: libmpc.so.2
次のように:
インストールlibmpc3
リポジトリ経由でシンボリックリンクを作成します(ダーティメソッドですが、機能しました):
Sudo apt-get install libmpc*
または(i386のツールチェーンの場合):
Sudo apt-get install libmpc*:i386
/usr/lib/i386-linux-gnu
i386の場合または/usr/lib/x86_64-linux-gnu
AMD64の場合:
Sudo ln -s libmpc.so.3.0.0 libmpc.so.2
libmpcのバージョン2(つまり、libmpc.2.dynlib)は、ソースのバージョン0.7〜0.9からビルドされます(ダウンロードアーカイブは www.multiprecision.org にあります)。 0.9より前のバージョンは、新しいバージョンの [〜#〜] gmp [〜#〜] と互換性がないように見えるので、最初にそれをビルドしてみます。 gcc 4.8、gmp、およびmpfrをインストールした後、OsX ElCapitanシステムで0.9をビルドして使用することができました。
brew tap homebrew/versions
brew install gcc48
brew install gmp
brew install mpfr
次に、mpc-0.9ディレクトリで:
./configure --with-gmp=/usr/local/Cellar/gmp/6.1.0 --with-mpfr=/usr/local/Cellar/mpfr/3.1.3
make
Sudo make install