12

我在 Ubuntu 13.10(64 位)的主文件夹中有一个交叉编译器。我在页面底部下载了它上面写着“预建工具链”。当我尝试编译一些东西时,它给了我这个:

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()。

4

4 回答 4

13

发出以下命令后,我的错误消失了:

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

ldconfig是魔法。

于 2013-12-03T00:11:32.810 回答
5

你能在 /usr/lib 或 /usr/lib64 中找到 libmpc.so.3 吗?如果你找到它或相同的东西,你需要用 libmpc.so.2 文件替换它。该文件可以在较低的不同 Linux 版本中找到。

于 2015-03-04T10:19:56.753 回答
4

我解决cc1: error while loading shared libraries: libmpc.so.2如下:

通过 repo安装libmpc3并制作符号链接(肮脏的方法,但有效):

sudo apt-get install libmpc*

或(如果 i386 的工具链):

sudo apt-get install libmpc*:i386

/usr/lib/i386-linux-gnui386 或/usr/lib/x86_64-linux-gnuamd64 中:

sudo ln -s libmpc.so.3.0.0 libmpc.so.2 
于 2017-06-01T08:55:41.323 回答
2

libmpc 的第 2 版(即 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
于 2016-02-21T18:54:45.430 回答