aarch64-linux-gnu-gcc-8 test.c -static运行会报错undefined reference to `__aarch64_cas4_acq'是什么原因呢
时间: 2023-09-09 15:14:22 浏览: 69
这个错误提示是因为链接器找不到__aarch64_cas4_acq函数的定义,导致链接失败。__aarch64_cas4_acq是GCC内建的一个原子操作函数,用于执行64位CAS操作。在编译时需要添加-latomic选项来链接GCC提供的原子操作库libatomic。因此,你需要在编译时加上-latomic选项来解决该错误,命令如下:
aarch64-linux-gnu-gcc-8 test.c -static -latomic
相关问题
分析gcc和gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu区别
gcc和gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu在以下几个方面有所不同:
1. 平台:gcc是一个通用的编译器,可以在多个平台上使用,而gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu是专门为ARM 64位架构的Linux系统而设计的编译工具链。
2. 优化:gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu包含了针对ARM 64位架构的优化,能够生成更好的代码,而gcc则没有这种专门的优化。
3. 版本:gcc是一个长期稳定版本的编译器,而gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu是基于gcc的特定版本进行开发的,因此版本更新可能会更快。
4. 开发者:gcc由GNU组织维护和开发,而gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu是由Linaro公司开发的。
总的来说,gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu针对ARM 64位架构的Linux系统进行了专门的优化,能够生成更好的代码,在这个平台上进行开发时更加适合。而gcc则是一个通用的编译器,可以在多个平台上使用。
gcc和gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu区别
gcc和gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu都是编译器,但是它们所针对的平台不同。
gcc是GNU Compiler Collection的简称,是一个广泛使用的开源编译器,支持多种语言,包括C、C++、Objective-C、Fortran、Ada等,可以在多个平台上使用。
而gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu是专门为ARM 64位架构的Linux系统而设计的编译工具链,由Linaro公司开发,其中gcc是其中的一部分。它包含了针对ARM 64位架构的优化,能够生成更好的代码。
因此,如果你要在ARM 64位架构的Linux系统上进行开发,使用gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu会更加适合。而如果你要在其他平台上进行开发,使用gcc会更加方便。