cc1编译器报错:在加载共享库libmpc.so.2时出错,无法打开共享对象文件:找不到该文件或目录。

12

我在Ubuntu 13.10(64位)的主文件夹中有一个交叉编译器。我从这里下载它,下载链接在页面底部“Prebuilt Toolchains”处。当我尝试编译某些东西时,会出现以下错误:

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

通过搜索,我找到了这个。我尝试了作者写的命令,但是它们对我没有帮助,因为我使用的是家目录下的交叉编译器,而不是系统编译器。有人能帮忙吗? 编辑: 这是我正在尝试进行交叉编译的文件。
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);}

我还有一个使用AT&T语法编写的汇编文件,它调用了kernel_main()函数。


1
请问您能提供更多细节吗?比如使用的是哪个交叉编译器,使用了什么命令,以及您所在的系统等等。 - Josh
我刚从同一个地方下载了另一个交叉编译器,但它也出现了同样的问题。我应该尝试使用 Fedora 而不是 Ubuntu 吗?还是这很奇怪? - Isaac D. Cohen
我刚在Fedora上尝试了一下,也没有成功。有人能否在他们的硬件上尝试来自os-dev.org的i386-elf交叉编译器?也许只是我的电脑因某种原因出现了这个问题。 - Isaac D. Cohen
我从OS-dev.org下载了另外两个交叉编译器,但它们也有同样的问题。显然我做错了什么。 - Isaac D. Cohen
你能告诉我你试图交叉编译什么吗? - vinay hunachyal
4个回答

14

在我执行了以下命令后,我的错误消失了:

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

ldconfig 是魔法。


libstdc++.so.6.0.20-gdb.py不是一个ELF文件 - 它在开头有错误的魔数字节。 - Trevor Hickey

5

你能在 /usr/lib 或者 /usr/lib64 目录下找到 libmpc.so.3 吗?如果你找到了该文件或类似的文件,你需要替换它为 libmpc.so.2 文件。这个文件可以在不同版本的 Linux 下找到。


1
在我的情况下,我只是将libmpc.so.2链接到libmpc.so.3,然后重新编译,这似乎也可以工作。 :-) - tudor -Reinstate Monica-

4

我通过以下方法解决了cc1: error while loading shared libraries: libmpc.so.2的问题:

通过软件库安装libmpc3并创建符号链接(虽然不太规范,但有效):

sudo apt-get install libmpc*

或者(如果为i386工具链):
sudo apt-get install libmpc*:i386

对于i386架构,在/usr/lib/i386-linux-gnu目录下;对于amd64架构,在/usr/lib/x86_64-linux-gnu目录下:

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

2

libmpc的第二版(即libmpc.2.dynlib)是从源代码版本0.7-0.9构建而成的(在www.multiprecision.org可以找到下载存档)。早于0.9版本的版本似乎与更新版本的GMP不兼容,因此建议先尝试构建后者。在安装了gcc 4.8、gmp和mpfr之后,我能够在我的OsX El Capitan系统上构建和使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接