有时需要进行交叉编译的时候,可能需要在高版本的架构上编译一个低版本的工具来运行到一个旧平台上。高版本的架构一般自带的都是高版本工具,这样编译出来的工具无法在低版本架构上运行,所以就有了多版本编译器共存的情况。这里我们以 gcc 为例简单说一下多版本 gcc 共存的解决方案,其实很简单。
在高版本的 Linux 上的源里是不能直接 apt 去安装低版本的 gcc/g++ 的,所以这里简单记录下如何在高版本的 Ubuntu 上也可以直接 apt 安装。
换源
既然高版本的源里没有安装包,直接更新一下低版本的源好了。以 gcc-4.8 为例,这里首先把 ubuntu 16.04 的源更新到 /etc/apt/sources.list中去:
然后 sudo apt update
一下,把包资源更新进来。
安装
可以先查看一下版本信息:sudo apt-cache policy gcc-4.8
,作用类似于搜索,下面所有能安装的子版本都会列出来。然后直接 apt install
对应的版本即可。
这种方法不管想安装什么版本的旧软件,只要有对应的更新源即可。
第一种方法:
直接在使用时指定 CC 或 CXX,跟上对应版本的 gcc/g++ 的绝对路径即可。个人感觉这样会更方便一点,只要在编译的时候指定一下变量即可。
第二种方法:
设置优先级:
数字越大,表示优先级越高,上面的例子中就是优先使用 gcc-9
,这个具体的数字不用特别关注,只要能体现出来大小来表达优先级就可以。
删除设置的优先级:
切换版本可以通过以下命令:
选择对应的数字即可,然后回车即可切换版本。
在使用 gcc-4.8 静态编译 gdbserver 的时候遇到错误:
解决办法其实很简单,在 make 之前进行文件 copy:
然后就可以加上-fPIC -static
参数进行静态编译。
make 完成之后,记得再改回来:
上述问题是 gcc 的一个 Bug,解决方案就如我们上面的操作一样。
deb http:
/
/
dk.archive.ubuntu.com
/
ubuntu
/
xenial main
deb http:
/
/
dk.archive.ubuntu.com
/
ubuntu
/
xenial universe
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial main
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial main
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
updates main
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
updates main
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial universe
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial universe
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
updates universe
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
updates universe
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
security main
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
security main
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
security universe
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
security universe
deb http:
/
/
dk.archive.ubuntu.com
/
ubuntu
/
xenial main
deb http:
/
/
dk.archive.ubuntu.com
/
ubuntu
/
xenial universe
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial main
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial main
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
updates main
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
updates main
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial universe
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial universe
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
updates universe
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
updates universe
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
security main
deb
-
src http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
security main
deb http:
/
/
mirrors.aliyun.com
/
ubuntu
/
xenial
-
security universe
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-11-26 09:14
被有毒编辑
,原因: