apt-get gcc 4.7 多库

apt-get gcc 4.7 多库

我按照@jokerdino 的指示在 askubuntu

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.7

但为了成功编译我必须:

  1. 导出 LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
  2. sudo ln -s /usr/lib/x86_64-linux-gnu/crti.o /usr/lib64/crti.o
  3. sudo ln -s /usr/lib/x86_64-linux-gnu/crtn.o /usr/lib64/crtn.o

我理解这实际上破坏了 Ubuntu 多库模型。那么我该如何以正确的方式编译并删除链接呢?因为现在我想为 32 位进行交叉编译。(使用 Precise)

答案1

我删除了问题中发布的符号链接。

然后根据@shuttle87的建议问库本图
我做了以下事情:

sudo apt-get install --reinstall binutils  
sudo apt-get install --reinstall build-essential  
sudo apt-get install --reinstall libc6-dev  
sudo apt-get install --reinstall gcc-4.7-multilib   
sudo apt-get install --reinstall g++-4.7-multilib 

然后这个就起作用了: gcc-m32 foo.c 复制代码
为 80386 进行编译。

但要为 x86-64 编译gcc foo.c不工作。

所以我尝试了:

 gcc foo.c -L /usr/lib/x86_64-linux-gnu

但那也没用。最后不得不:

export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu

gcc foo.c会工作。

我使用“readelf -h”来验证可执行文件是 80386 和 X86-64。

不明白为什么“L”标志不起作用......

但至少我删除了那些符号链接,并且可以使用“导出”轻松地进行交叉编译。

相关内容