ubuntu16.04 安装交叉编译工具aarch64-linux-gnu-gcc/g++,并解决GLIBCXX_3.4.26‘ not found的问题

解决Ubuntu交叉编译环境下GCC高版本导致的GLIBCXX错误
在Ubuntu16的aarch64交叉编译环境中,遇到运行时GLIBCXX_3.4.26版本不匹配的问题。为了解决这个问题,可以使用`apt-get autoremove`移除高版本的gcc,并通过`apt-get install`安装适合rk3399debian10的gcc-8-aarch64-linux-gnu版本。确保先通过`apt-cache search aarch64`查找合适的版本。

解决安装高版本gcc之后运行出现/lib64/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not found的问题

我的环境:使用ubuntu16 交叉编译环境aarch64-linux-gnu。编译后的文件放到rk3399 debian10下,发现如上问题。降低虚拟机上aarch64-linux-gnu版本即可。

操作如下。

sudo apt-get autoremove gcc-aarch64-linux-gnu

 

https://blog.youkuaiyun.com/weixin_39681471/article/details/110517917

注意:通过apt-cache search aarch64 查看可以安装的版本,然后选择合适的安装。

sudo apt-get install gcc-8-aarch64-linux-gnu 

<think>我们正在查找aarch64-linux-gnu-gccUbuntu16.04中的安装路径。根据引用内容,我们知道在Ubuntu16.04中可以通过apt安装交叉编译工具链。安装后,如何查看其安装路径呢?在Linux系统中,通过apt安装的软件,其可执行文件通常存放在系统的特定目录中。常见的存放位置包括:-`/usr/bin`:存放用户安装的可执行文件(通常是没有版本号的主程序符号链接)-`/usr/lib/gcc-cross`:存放交叉编译工具链的特定版本(可能有版本号)具体到aarch64-linux-gnu-gcc,根据引用[3]中的安装步骤,我们安装了两个部分:1.安装了特定版本的交叉编译器,例如`gcc-5-aarch64-linux-gnu`,这个包会安装带有版本号的编译器,如`aarch64-linux-gnu-gcc-5`。2.安装了没有版本号的`gcc-aarch64-linux-gnu`包,这个包实际上会创建一个符号链接,指向已安装的某个版本(比如最新安装的版本)的编译器。因此,我们可以通过以下方法查找:方法1:使用`which`命令查找可执行文件的位置在终端中执行:whichaarch64-linux-gnu-gcc方法2:使用`dpkg`查询软件包安装的文件由于我们是通过apt安装的,所以可以使用dpkg来查看软件包安装的文件列表。首先,确定我们安装的软件包名称。根据引用[3]:-我们安装了`gcc-5-aarch64-linux-gnu`和`gcc-aarch64-linux-gnu`(以及对应的g++包)-其中,`gcc-aarch64-linux-gnu`是一个元包,它可能只包含一个指向具体版本的符号链接。查询具体包安装的文件:dpkg-Lgcc-5-aarch64-linux-gnu|grepbindpkg-Lgcc-aarch64-linux-gnu|grepbin方法3:直接使用find命令在常见目录中查找find/usr-nameaarch64-linux-gnu-gcc但通常我们不需要这么麻烦,因为安装后,它应该已经在系统的PATH路径中,所以直接使用`which`或`whereis`即可。根据经验,交叉编译器的可执行文件通常位于:/usr/bin/aarch64-linux-gnu-gcc(这是符号链接,指向实际版本)/usr/bin/aarch64-linux-gnu-gcc-5(实际的可执行文件,版本号可能不同)另外,交叉编译器相关的库和头文件等可能安装在:/usr/aarch64-linux-gnu/但用户问的是`aarch64-linux-gnu-gcc`这个可执行文件的路径。让我们结合引用[3]中的安装步骤,可以推测:安装后,我们使用`aarch64-linux-gnu-gcc-v`查看版本,这说明该命令已经在PATH中。因此,最直接的方法就是在终端中运行:whichaarch64-linux-gnu-gcc它会输出类似:/usr/bin/aarch64-linux-gnu-gcc然后我们可以通过`ls-l`查看这个路径是符号链接还是真实文件,以及它指向哪里。所以,回答用户的问题:在Ubuntu16.04中,通过apt安装aarch64-linux-gnu-gcc,其安装路径通常为`/usr/bin/aarch64-linux-gnu-gcc`。我们可以使用`which`命令来确认。如果用户想要知道该编译器实际安装的所有文件路径,则可以使用`dpkg-L`来查看对应软件包安装的文件列表。注意:根据引用的安装步骤,用户可能安装了两个包,即`gcc-5-aarch64-linux-gnu`和`gcc-aarch64-linux-gnu`。其中,`gcc-aarch64-linux-gnu`安装的是无版本号的符号链接,而`gcc-5-aarch64-linux-gnu`安装的是实际的可执行文件(带有版本号)。因此,我们可以这样操作:1.查找符号链接的路径(即不带版本号的命令):whichaarch64-linux-gnu-gcc2.查找实际可执行文件的路径(可能被符号链接指向):ls-l$(whichaarch64-linux-gnu-gcc)或者直接查找所有相关文件:dpkg-Lgcc-5-aarch64-linux-gnu|grepbin/aarch64-linux-gnu-gcc但通常,用户只需要知道命令所在的路径,以便在编译脚本中使用,所以`which`命令的输出就是用户想要的。另外,如果用户安装了多个版本,那么可能需要查看具体版本。但引用中没有提到多版本存的情况,所以默认使用`which`即可。根据引用[1]和引用[3],安装后可以使用`aarch64-linux-gnu-gcc-v`查看版本,这也说明该命令已经在PATH中。因此,总结回答:在Ubuntu16.04中,通过apt安装aarch64-linux-gnu-gcc,其可执行文件通常位于`/usr/bin/aarch64-linux-gnu-gcc`。您可以使用以下命令查看具体路径:whichaarch64-linux-gnu-gcc如果该命令没有输出,则说明可能没有安装或者不在PATH中,但按照引用中的安装步骤,应该是安装成功的。如果用户想要知道该编译器的所有文件安装路径,可以使用dpkg查询安装的包。下面我们按照用户要求生成相关问题:</think>在Ubuntu 16.04系统中,通过`apt`安装的`aarch64-linux-gnu-gcc`交叉编译工具的路径查找方法如下: ### 查找步骤 1. **使用 `which` 命令定位可执行文件** 在终端执行: ```bash which aarch64-linux-gnu-gcc ``` 输出示例: `/usr/bin/aarch64-linux-gnu-gcc` 此路径是编译器的主入口(通常是符号链接)。 2. **查看真实路径(若存在符号链接)** 执行: ```bash ls -l /usr/bin/aarch64-linux-gnu-gcc ``` 输出示例: `lrwxrwxrwx ... /usr/bin/aarch64-linux-gnu-gcc -> aarch64-linux-gnu-gcc-5` 这表示它指向实际版本(如`aarch64-linux-gnu-gcc-5`)。 3. **通过 `dpkg` 查询文件归属(推荐)** 执行: ```bash dpkg -L gcc-aarch64-linux-gnu | grep bin/aarch64 ``` 输出示例: ``` /usr/bin/aarch64-linux-gnu-gcc /usr/bin/aarch64-linux-gnu-gcc-5 ``` 这会列出软件包安装的所有可执行文件路径[^3]。 4. **搜索特定版本路径(如安装多版本)** 若安装了`gcc-5-aarch64-linux-gnu`,执行: ```bash dpkg -L gcc-5-aarch64-linux-gnu | grep bin ``` 输出示例: `/usr/bin/aarch64-linux-gnu-gcc-5` --- ### 典型安装路径总结 | 组件类型 | 路径 | 说明 | |-------------------|---------------------------------------|-------------------------------| | **主编译器** | `/usr/bin/aarch64-linux-gnu-gcc` | 默认调用的符号链接 | | **具体版本编译器**| `/usr/bin/aarch64-linux-gnu-gcc-5` | 实际二进制文件(版本号可能不同) | | **头文件/库文件** | `/usr/aarch64-linux-gnu/include/` | 目标架构的头文件 | | | `/usr/aarch64-linux-gnu/lib/` | 目标架构的库文件 | > **注意**:路径中的版本号(如`-5`)取决于安装时选择的工具链版本[^1][^3]。 --- ### 验证安装 运行版本检查: ```bash aarch64-linux-gnu-gcc -v ``` 输出中的`gcc version`和`Target: aarch64-linux-gnu`可确认工具链配置正确[^1][^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunxiaopengsun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值