AutoTools 添加Loongarch 支持

为了简化可移植构建的难度,早期有一套AutoTools的工具帮助程序员构建软件。c/c++开源项目大多由Autotools 工具管理,源码编译常见三步曲。

./configure
make
make install

Loongarch 下编译常见的问题如下:

./configure
configure: error: cannot guess build type; you must specify one

./configure 阶段,Autotools 会扫描宿主机系统(即当前正在运行的计算机)以进行各种测试并完成默认设置。

在测试过程中,有一项是系统架构测试,当在陌生的新架构中运行时,./configure 将报错并退出,导致无法完成软件编译。

其中最关键的2个架构相关文件为:config.guessconfig.sub

GNU Autotools 套件中 config.guessconfig.sub,被独立维护在为 config.git 仓库。

其他软件如gnulib、automake将不定期从这里获取,并合入自己的代码树中,最终上游开发者通过GNU Autotools打包后,这2个文件将进入tarballs中被发布。

Loongarch架构相关的补丁,于2020年12月22日被合并到 config.git 主分支。

https://git.savannah.gnu.org/gitweb/?p=config.git;a=commitdiff;h=c8ddc8472f8efcadafc1ef53ca1d863415fddd5f

最新的config.git 已合并了对Loongarch 架构的支持。而对早期的config.git 没有添加 Loongarch 架构支持的,需要自已手动添加。

方法一:编缉 config.guess 文件,在ia64:Linux:*:*) 下面添加Loongarch 架构的支持。

loongarch*:Linux:*:*)echo ${UNAME_MACHINE}-unknown-linux-gnuexit ;;

方法二:从网上获取最新的config.guess 和 config.sub 文件然后进行替换

$ sudo wget -O /usr/share/misc/config.sub "git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD"

$ sudo wget -O /usr/share/misc/config.guess "git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD"

在源码目录执行下面的命令会/usr/share/misc/config.sub 和 config.guess 替换掉工程目录下面的config.sub 和 config.guess 文件

$ libtoolize -f -i -c

c/c++ 代码编译选项、编译宏移植

功能 x86编译选项 龙芯(MIPS)编译选项 龙芯(Loongarch)编译选项
定义编译生成的程序为64 位程序 -m64 -mabi=64 -mabi=lp64
定义指令集类型,由X86修改为MIPS或Loongarch -march=skylake -march=mips64r2 -march=loongarch64
原有x86版编译宏替换为MIPS宏或Loongarch宏 __X86_64__ __mips64 __loongarch64
指定为小端模式 仅有小端模式 -EL 仅有小端模式
查看编译器自定义编译宏 echo |gcc -E -dM -

参考链接:

文章 - LoongArch 开放社区

Loongarch 软件移植相关推荐

  1. linux 软件移植(库移植与源码移植编译)

    Linux下的软件移植,基本都是自己编译源码,步骤都是配置,然后编译,安装. 注意: 配置的时候会设置-prefix参数,也就是我们最终安装的位置,如果不设置的话就是默认安装位置.将编译出来的库要放到 ...

  2. 绿盟赛—鲲鹏计算平台软件移植

    目录 前言 使用鲲鹏平台的背景及意义 "鲲鹏"满足了市场对算力的需求 我要用"鲲鹏", 我要注意什么? 软件迁移原理和迁移过程 软件迁移原理概述 计算技术栈与程 ...

  3. linux开源软件 移植,Linux之开源软件移植

    移植环境 Utuntu 15.04 1.mplayer移植 版本:mplayer-export-snapshot.tar.bz2 /mplayer-export-2015-11-26 Linux PC ...

  4. mac软件移植linux,相比软件迁移 Apple Silicon Mac的Linux系统移植工作更困难

    Asahi Linux 项目团队在博客文章中写道,他们尝试了在 Apple Silicon 系统上设置备用启动内核.虽然已实现大多数功能,但还是缺乏对安装非苹果内核的命令支持. Apple Insid ...

  5. ios计算机音乐软件,DOTEC-AUDIO 将均衡、响度和 AU 插件播放器软件移植到了 iOS

    DOTEC-AUDIO将三款软件和插件制作成了iOS版本,现在你可以在苹果的APP Store上购买和下载,在iPhone或iPad上使用这些好看又好用的音频工具. AUAudioPlayer音乐播放 ...

  6. wine —— windows软件移植到Linux系统

    导读: wine是我们在Linux下运行部分Windows应用程序必不可少的工具. 接下来主要了解wine服务的工作原理.wine服务的部署以及windows应用程序在统信UOS操作系统中的安装. 一 ...

  7. 对linuxptp软件移植到arm下遇到的问题进行记录

    首先更改makefile CC= gcc #这里修改成你的交叉编译器 使用命令:make #直接编译就好 将生成的ptp4l,复制到你的板卡 /usr/bin/下 #这样你就可以直接使用这个可执行文件 ...

  8. 嵌入式linux系统移植的四大步骤_如何移植开源软件到嵌入式Linux系统

    我们知道,在PC机Linux上,安装开源软件,一般来讲,大多是如下几个步骤就搞定了. tar -xzf  open_source_software.tar.gz cd       open_sourc ...

  9. Cubase v5.1.1 macOS (移植版)音乐制作软件下载

    Cubase v5.1.1 macOS | 266.7M Cubase 5的口号是体验创新,Cubase 5的5大创新来自于: 节奏设计和loop制作 人声编辑和音高修正 更深层次的混音体验创新的作曲 ...

最新文章

  1. 关于iOS知识的提升
  2. 基于QT Plugin框架结构
  3. aws lambda_AWS Lambda事件源映射:使您的触发器混乱无序
  4. 【高并发】——幂等的实现方案
  5. HTML 5--Grouping and Nesting Styles
  6. 【信息系统项目管理师】第4章-项目整体管理 知识点详细整理
  7. Docker下载太慢
  8. caffe的python接口学习(1):生成配置文件
  9. Java语句详解(图解java语句概念、快速掌握java基础知识点)——Java基础系列
  10. 旅游景区无线智能调频广播系统
  11. 3道常见的SQL笔试题,你要不要来试试!
  12. 个人商业画布分析-0408-v1.0王玉娟
  13. 网上说的白帽子黑帽子都是什么?
  14. 基于α-β剪枝算法的智能五子棋
  15. Switch NS 通过华硕梅林路由DNSMASQ屏蔽任天堂服务器
  16. QT学习-超漂亮的软件登录界面模块
  17. Matlab 元胞数组和结构体
  18. Python Diary - Day 4 运算符
  19. 区块链项目/比特币/币圈管理后台/OTC系统管理后台/虚拟数字货币OTC场外交易平台/交易币种管理/币种配置/用户资产/充币记录/划转记录/币种参数/商家管理/rp原型/Axure后台管理原型
  20. JAVA公路车几何图_争当老司机 深入解读自行车几何图表

热门文章

  1. 《新编计算机科学概论》一0.3 计算机与社会
  2. qt tcp接收缓冲区设置_TCP的发送缓冲区
  3. html文本框边框变色,怎么使用CSS设置文本框的边框
  4. 数字图像处理(极简) 第三章 BMP文件的读取与显示(docx)
  5. 【俄罗斯方块】单机游戏-微信小程序项目开发入门
  6. 01 HTML简介——笔记
  7. 解决方案指导------匹配(Matching)(3)
  8. 微信公众平台消息接口开发(4)天气预报
  9. ClickHouse-入门及Linux单机安装
  10. easyconnect xp登录_easyconnect怎么用?easyconnect电脑版使用方法介绍(含无法连接解决办法)...