由 expat 编译错误揭示的 Loongnix 巨坑,以及由此生发的关于社区互动的思考

本人在前一阵子团购的 3A3000 开发板上安装了 Gentoo 系统。但由于一直没有时间移植个人所用的 Linux 补丁,一直用 Loongnix 的 linux-3.10.84 临时顶上内核的位置。一开始用 amd64 机器交叉编译的方式自举了整个基本系统,为了简单起见,没有打开 multilib 支持;在 3A3000 上成功引导之后,再打开了 multilib,安装其他软件,整个过程还算顺利。
 
然而在 10 月份后续更新系统的过程中,马上发现 expat 库永远编译不过,安装过程报 expat_config.h header checksum mismatch,意思是这个文件在不同的 multilib ABI 下内容不一致。但有意思的是,无论是 expat 上游还是 Gentoo 社区都完全找不到这个 bug!当时因为工作比较忙,于是没有深究了。
 
最近虽然工作愈发地忙起来了,但正好想搭建一个 Linux 的本地测试环境,公司的后端又用的 Golang,所以想着放在脚旁边的龙芯很适合。于是 expat 这个库挡住了很多软件的编译,我又不想 pin 住它的版本,所以开始继续研究了。
 
两个文件的差异是这样的:
--- ./expat-2.2.5-abi_mips_o32.o32/expat_config.h       2017-11-10 16:07:07.241011603 +0800
+++ ./expat-2.2.5-abi_mips_n64.n64/expat_config.h 2017-11-10 16:07:40.819296062 +0800
@@ -23,7 +23,7 @@
#define HAVE_GETPAGESIZE 1

/* Define to 1 if you have the `getrandom' function. */
-/* #undef HAVE_GETRANDOM */
+#define HAVE_GETRANDOM 1

/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
@@ -53,7 +53,7 @@
#define HAVE_STRING_H 1

/* Define to 1 if you have `syscall' and `SYS_getrandom'. */
-#define HAVE_SYSCALL_GETRANDOM 1
+/* #undef HAVE_SYSCALL_GETRANDOM */

/* Define to 1 if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1





这是什么情况? o32 ABI 下没有 getrandom 函数,但 n64 下却有?(看了 configure.ac 文件,上边的判断为假才会检测下边那个不一致对应的选项,所以相当于只有一处不一致。)连单个架构下 ABI 都不能保持一致的 syscall 实现,这种代码怎么可能逃过 Linux 各大子系统 maintainers 的法眼,而进入主线内核呢?
 
等下,我们用的是 Loongnix 的内核,好像还是 3.10.84 版本,这个版本根本就不该有 getrandom,龙芯团队的内核补丁水平我们也是知道的……果然
 
按照一般的商业逻辑还原一下场景,应该是龙芯的某个客户一定要使用 getrandom 系统调用,龙芯团队就给他加上了;但按照 Loongnix 代码库提交历史,能感受到龙芯的研发团队从来都是能少一事则少一事,客户想要啥,给啥就好了,否则怕影响别的地方,毕竟都没时间精力测试……于是不光漏掉了 32 位内核的对应修改,而且应该是忘了改 glibc,因为直到 glibc 2.25 这个函数才被支持……最终加上 Gentoo 的 user-space,获得了一个四不像!
 
虽然两个地方对我都没影响,问题应该也不在龙芯团队头上,但怎么说都是有些蛋疼的感觉……看起来确乎有必要自己编译内核了 :joy:
 
另外也希望 Loongnix 尽量把自己的代码 upstream 吧,这样反而维护的人手能相当于多一些,况且 arch/mips 等等相关位置的改动所有人都看着,也不需要担心失去控制之类的。实际上,本人一直不是很理解为何一定要坚持自己维护单一一个版本,这主要是因为:
  1. 反正据本人了解,许多商业项目(以及龙芯公众可见的所有项目)都是 fork 一份代码出来,然后永远不管,就算提交到上游的代码被别人再怎么改,也不可能影响到项目;
  2. 维护单一一个版本造成研发人员思维僵化,永远不需要学习新版本的改动。短期来看可能省出了许多时间,但按照上述的“商业逻辑”,下一期项目一切从头评估,上游项目的版本往前推进了许多,这时候跟还是不跟?跟,所有更新版本的学习成本堆积在一起;不跟,最终系统的性能指标、安全漏洞最多跟以往一样,还不如从一开始就连二期都不做。
  3. upstreaming 短期来看也有许多成本,尤其像 Linux 这种协作流程有些奇葩的项目,加上龙芯的研发人员英语可能存在沟通障碍(看过 commit message 的人都懂,有些看得我尴尬癌都犯了,最关键最后还没看懂,连作者想说什么汉语都不知道……),upstreaming 可能受到阻碍。但是,这种成本很大程度上是一次性的,每个人只需要付出一遍,在整个几年甚至十几年的职业生涯中显得微乎其微。

 
说到这里,与国际社区的互动是确实有必要的。MIPS 生态本就式微,但仍然有一定体量。不能因为片面追求“全自主”就摈弃一切外界影响,何况由于上述的语言问题,龙芯的社区与国际社区存在信息不对称的现象。MIPS64r6、microMIPS 不支持就算了,自主指令集扩展文档不开放也就算了,GCC/LLVM 支持近乎为零也就算了,各种带汇编加塞儿的软件没有 MIPS/LoongISA 支持也就算了;目前龙芯生态系统建设中,危险的地方在于,国内有 push MIPS/Linux 生态的诉求,但国外的 MIPS 玩家根本感受不到。这使得外界的 MIPS 生态有崩塌的危险,万一发生了,我不认为当前只会 GNU/Linux 或者 Android 换个壳子的所谓“国产系统”能持续性地抵挡住外边的版本升级洪流而不掉队。(除非他们真的跟万年 XP 党一样,能够同一个系统永远不更新,一直用到死。现在看来,这种人还不少。)
 
何况还有各种带颜色的媒体报道,把单纯的建立独立于 Wintel 的另一极计算生态系统的想法无限政治化,殊不知使天下摆脱 Windows/Intel 垄断这件事如果能做成,这件事的意义中最不起眼的恰恰是政治意义!技术上的充分竞争促使商业上也充分竞争;大部分软件都一定要考虑跨平台互操作,对软件行业的良性发展有好处,甚至在未来可能发生下一次架构大迁徙之时,我们能够提前做好准备。至于政治上的自主可控,那不过是做了正确的事情之后,自然会具有的性质。所有国家都有权利建设自主的基础设施,当然也包括计算;因为我们是中国人,发出的声音自然是中国要做自己的 CPU,本身在当前美国本位的 IT 行业,你存在这件事情本身就是(他们的)政治化了,你在长大之前根本无法改变这个事实,只能在媒体报道中无限弱化它,让所有人都淡忘政治性的存在,直到终于成长起来,这时候再说什么都不迟。可惜的是现在国内一提龙芯就是自主可控,甚至还有一部分汉语编程党混进来,根本不提商业上打破垄断有多么深远的意义,宣传上不清楚还有什么好牌可以打了。
 
当然这些东西,我们作为社区开发者,也只能够描述一下见闻和思考;In the meantime,我还是去移植内核补丁了。这个 expat 编译错误以及调试它耗费的时间,最终我选择放弃这个 Loongnix 项目交付的产品;背后的东西,表明很多时候就算你做了很多事情,觉得自己很努力了,但实际上并一文不值。你要用正确的方式做事情才可以。
 
与君共勉。

96 个评论

技术方面不懂,但对非技术方面的表示不同意见。
最好在熟悉的软硬件基础上更进,以自身需求进行外部可能选择,这是目前稳的一种需求。
我不认为今天的所谓技术,有超过DOS系统的技术含量很多,经典和优秀的不会在十年左右消失其影响。
就如尼古拉·特斯拉的技术产品范围,与中国秦国制度的影响。
很多浪花,在历史的河流。
可以自由尝试实现,比单纯的评比推理结果要好。
“今天的‘所谓’技术没有超过DOS技术含量很多”,那为何就连最初只是 DOS 一层外壳的 Windows 系统也最终完全摈弃 Win9x 技术,而改用底层一些部分甚至比 Linux 设计还出色的 NT 内核构建呢?导致现在即便是 Windows 用户也没有在任何程度上使用 DOS 技术呢?
看过龙芯和龙梦的代码库,项目大多都几个月没动。在以前可以说没钱,请不起人,最近新闻说大基金注入资金,希望龙芯能把人材留住,硬件和软件齐头并进。
我还记得在龙芯官网上的一篇新闻,有提到说要成为fedora的“重要开发力量”。可现在只看到龙芯在费力维护一个早已淘汰的版本,loongnix源里fedora25的目录已经大半年没更新了, @loongnix 也已经确认feodra25项目暂停了。
现在龙芯给我的感觉就是只想维护好现有的政企、行业用户,没有要好好建设社区的意愿。我一直在用loongnix,有时候的更新真的搞不懂。像用eog替换eom这种更新,让人觉得莫名其妙,没说明替换的原因,我后来有提问也没有得到答案。以及某个包更新后没有更新相关依赖的包,导致不能安装更新,只能看看而已。
xen0n

xen0n 回复 DaDou13

我只想说,现在的最优解仍然是龙芯努力写代码,把代码尽力 upstream,并开放能够开放的所有文档,使社区能够做好社区所能做的。让专业的人干专业的事——龙芯设计硬件、写文档和最初的代码,开源社区做软件和生态——可以负责任地说,我国的高校、企业里热衷开源的人们,有能力完成这生态的建设工作!
楼主你真的看过上游的代码?上游一直在合并龙芯的代码你不知道?
你个废物别瞎扯淡了行吗?
比 DOS 强就行的大清朝思想,滚一边去吧。DOS 是什么运行模式,什么时候的东西你都不知道。
就会瞎扯淡,比 DOS 强的技术,已经是行业标准,现在是个东西就必然支持的。比 DOS 强现在是必须的。
但是你这个白痴脑子都不存在的废物,都不知道。
不吃屎就行了的思想,你这个傻缺还有脸去说吗?
P 都不懂的赶紧闭嘴。别跟这里当小丑的现眼丢人,还觉得自己是个牛逼任务。
其实你就是一个精神病,赶紧去医院隔离治疗!
至少 qt 是没有。以前能支持 mips 的现在反而不支持。firefox 貌似也是。
我真不知道上游合并是怎么合并代码。
是不是合并的全都是 loongson ONLY 的内容,结果人家升级接口,龙芯代码就没人维护只能废弃等龙芯继续升级了。
xen0n

xen0n 回复 lemote1

为何没看过?没看过上游代码怎么知道该移植啥。。。Loongnix 的 linux-4.4 代码嘛,没合进主线的补丁大概 80% 吧,脏得超乎想象,合进主线的只是最基本的部分,光有那些代码板子的全部功能怕是不能完全发挥的
你过分了啊。我要还击了。
你就是猪脑袋装满屎的到处乱喷,应该庆幸你还是有个人的形状。
等等看你下次拉出来的屎,看你脑子里有什么。
你属于那种神经病不知道自己病的,要我帮你打电话不,脑子里有屎的你!
要喷屎或我帮你送神经病医院的,快回话。
脑子有病的家伙,人呢?
装死你没用,你装神经病和不装神经病一个样,都是忍受不了别人与你相异的信仰,所以你就是个相信东西相信坏了的猪。
说你假信仰,是你相信的东西最是使自己丧失了人性,成为一只动物,嗯,一只专门拉屎的猪一样。
不赞成由一点无限化为整体否定,就如任何一个人被认为有缺点就打死这个人。
其实是将自身的问题转移到认定的替罪羊身上。
任何一个人都是自由的,也应该理解别人同样有那种自由。
lemote1

lemote1 回复 xen0n

不知道你说的脏代码是不是在cgit.loongnix.org看的,如果是,我只能说你地方都没找对。
xen0n

xen0n 回复 lemote1

思考,确实见到过 lemote.com 域名的 git 库,但忘记了;上次去那边几乎啥都没有。那哪里有不脏的代码?那 cgit.loongnix.org 的代码放那有何作用?
看一下这里的回复 @loongnix @admin
dev.lemote.com/cgit/虽然不能说十分干净,但起码比loongnix好多了。
lemote1

lemote1 回复 xen0n

dev.lemote.com/cgit/虽然不能说十分干净,但起码比loongnix好多了。
我过分,哈哈哈哈。
真好笑,先看看你的那些龌龊事。
这里是龙芯的技术论坛,不是你表演的舞台。
有能耐去说技术内容,没能耐闭嘴。
你看看你写的东西,什么都不懂。还不许我说你啊?
怎么你还是神,你说的必须对啊?
就你那点水平,在这里吹牛你还不许别人说你啊?
你以为你是谁啊?
没能耐的废物,只会说假大空废话。
要么你做点有意义的事情,要么就闭嘴别影响大家。
哈哈哈,真能吹。
不赞成一点化整体。
你整体就都不对,之后还不许别人整体的否定。
你以为你是谁啊?要么说点有意义的,通篇都是没用的废话。
还不让别人说都是废话,必须承认一部分废话有用啊?
你这思维真是有意思。不去考虑是不是真的对,而非要求别人必须承认你怎么都要有对的地方。
真好笑。
这是技术论坛,不是你冒充大神让别人必须跪舔你的地方。
你满嘴的所谓技术,满嘴的那些垃圾。
你嘴里有技术吗?
满嘴的假大空废话,还不许别人说你啊?
真把自己当神,不许别人反驳你啊?
要么别做,要么做了就别嚷喷你。
自己做了还不愿意承担后果,你真觉得你是神啊?
别人是什么还真轮不到你来说,你只能是你。
重要的力量……
imgtec 反而维护了 24、25、26 。
可惜现在下载没了。公司的 mips 业务也卖了。
早知道当初赶紧下载一套留存了。
我相信善良的技术选择,我不相信那些邪恶的技术选择。
别人?别人谁啊?
你就是你,别代表别人,这里只有你没能耐只会满嘴废话。
而且还是影响别人正常交流的四处刷内容。
你自己做的什么龌龊事你自己不清楚?
嗯,你不清楚,你连人都不会做,我说的一点都没错。
你就是个碍事的废物。赶紧滚。
这里是龙芯的技术论坛,不是你刷版影响大家交流的现眼舞台。
有能耐说龙芯的技术,没能耐别扯淡占用网站资源。
别当个小丑的不停的在大家眼前蹦跶。
这不是你家,也不是精神病院。
你将技术等于自我为所欲为,而你的技术并没有开创世界,你有什么技术可在这里炫耀的。
还扯淡,还扯淡还扯淡。
这里是龙芯技术论坛,不是你扯淡的地方。
这里不是你家。不是你为所欲为的地方。
学会做人,首先就是别影响别人。
懂吗?
是你在代表其他人,你可以选择性的忘记。
是你在别人的帖子里攻击他人。
是你在秀自己嘴里的垃圾。
是你在超长显示你的精神情绪状态。
你应该学到什么是人,然后是技术为人服务的发展。
还在说废话。
到底是谁为所欲为?
你看看你在这个问题下面写的都是什么东西?
哪个有用了?
全是废话。
还自以为自己多牛啊?
无能就是无能,这不是错。
别影响别人是做人的基本原则。
你回了这么多。那句有用了?
还在这里装什么大神?
有能耐说龙芯的技术内容。
没能耐闭嘴。
这里不是你表演的场地。不是你家。
从开始我说深度系统里不应该有宗教软件,到你一直跟随的谩骂,到你用技术为借口的谩骂,我可以陪你发神经。
对,你应该清醒一下头脑,这里不是你家。
比烂吗?=_=b 我看你一直以来的发言,有“拆台”的嫌疑。看当前龙芯平台的应用情况,不考虑集中力量吗?
我认为他们一直在努力。
其实可以搞个过年过节的家用系列技术信息通报
一个连贯的计划技术渐进的蓝图,在节假日的周期信息通报中,有个问题积累,解决,整体渐进显现的形象。
在计划渐进框架内和偶尔突发实现的两类作为中交流,就如一篇文章,尤其语法的交流,而不是各自随意的发起交流。将个体之间交流与群体交流区分开来。
第一,不是比烂,lemote的代码确实更干净,也正因为如此,上游合并的都是lemote的代码。
第二,不是拆台,lemote就是那个“就算全世界背叛了你,我依旧在你身后”的loongson队友。
呵呵,还合并;
gcc/glibc/binutils就不说了,龙芯压根就没有任何更新。
就拿linux来说,最简单的,GS464E的perf_event的代码被merge到upstream了么?没有!!!
那你看过mips的patchwork网站吗?你知道perf不合并的原因吗?你知道maintainer正在休假吗?你知道mips社区最近的动向吗?如果不知道,你呵呵个蛋蛋?
你真光荣,四处乱发内容扰乱大家,之后还怪别人抨击你,说你有毛病。
你要是没毛病,我会说你?
自己找的骂,还怪别人真骂你?
真是自以为是的精神病患者。说出来的话,还不许有反对意见。
你真觉得自己是神,说的话都对?
你这精神病总觉得自己牛B,但是我就觉得你是废物,有问题吗?
还这里不是我家。
我说什么你说什么啊?
确实这里不是我家,但是你影响我的交流了。
我凭什么不能喷你?
你扰乱了这里正常的秩序,凭什么还说我有错,你不先看看你自己做的都是什么龌龊事?
看看你发的东西,那句话有用了。
而且还大量的发无意义的内容。
你光荣啊?
我不是你爸,没义务哄你,叫你乖宝宝。你这四处拉屎,你还觉得香啊?

还是那句话,有能耐说龙心技术,没能耐闭嘴。
这是龙心技术网站,不是你家想说什么说什么。
呵呵呵。要么自己玩,要么等上游。
龙心现在应该做的是维护一个自己的分之。在上游没有合并的时候,龙心应该同步自己的分之跟随更新。
但是现在呢,要么旧版本玩到死,要么就干等官方新版本 mips 继续出问题。

不过先把 gcc 的 bug 修复了吧。
http://ask.loongnix.org/?/question/141
这个问题 gentoo 也有,他们的问题是 gcc<6 的时候都会出现。
我之前用 debian sid 的 chroot ,貌似也有这个问题,但是我没发现 debian 有 bug 记录。
什么时候没有跟上游了?是的,loongnix这里只有3.10,4.4,然而lemote那边的4.9,master分支还不满足你?
mips的patchwork天天都看,按照你的“休假理论” maintainer都休假一半年了吧?!呵呵蛋啊
自己看,看不懂就少废话:
https://git.kernel.org/linus/0a00024d7a779b283db2a02130ffa46f47634d0c

https://www.linux-mips.org/archives/linux-mips/2017-08/msg00493.html

https://www.linux-mips.org/archives/linux-mips/2017-09/msg00021.html

https://www.linux-mips.org/archives/linux-mips/2017-10/msg00360.html

https://www.linux-mips.org/archives/linux-mips/2017-11/msg00088.html
毛病
虽然我不懂代码,与看过的经典代码印象类似,漂亮,就算新手阅读也整齐好对比。
不过英文恐惧症!!!唉
呵呵,这都不到0.1%吧; 楼组说“80%脏”都是超保守的说法;别的不说,你看看arch/mips/kernel/{perf_event.c,perf_event_mipsxx.c}有多少代码merge了?没有一点有关GS464E的代码被merge
而且,你这个基础的不能再基础的代码merge有啥好show的;你也不看看其他的CPU厂家,人家CPU还在实验室呢,linux内核的支持都一个patch接一个patch。
而且,tmd你们的commit在哪?就没有
没commit居然还怪人家没merge
而且,你们自己的git repo从06/08之后就没有任何update了;哪家CPU厂商/OEM厂商的代码跟你们一样半年没有任何更新的。
不懂是吧,哥来解释给你听。第一个链接告诉你,起码4.13的时候上游还在接受龙芯补丁;第二个链接告诉你,整个社区对mips主maintainer的失职相当不满,强烈要求增加副maintainer;第三个链接告诉你,imgtech有一个人被选为了副maintainer;第四个链接告诉你,由于imgtech收购重组,副maintainer也很蛋疼;第五个链接告诉你,主maintainer依旧在失职。mips社区已经如此凄凉,你只要愿意思考就知道龙芯的补丁要合并有多困难。你是真不懂呢,还是在装不懂?至于6月以后的,只进了patchwork没进git懂吗?你知不知道流程?是的,Intel的补丁一下就是一大桶,但你知不知道Intel本身就在社区担任maintainer?如果龙芯已经成熟到了那个地步,还需要你来这里指点江山?
"而且,tmd你们的commit在哪?就没有"
你是jiangtao9999小号?
目的还是为了骂人搞事情,而不是感觉上的需求。
是吗?
你TM的明明不是问题的问题,,随便说两句就算了,没事脑子有病不是?
多参与,多做,龙芯更多是硬件设计制作,自身参与多在软件系统方面准备,互动前进。
如果你的目的只是为了激化和骂人,我是没什么好说的了。
有事说事,别跟那个jiangtao9999小号似的。
在深度论坛我就经常遇到类似jiangtao9999帐号6~7个一起,也许是他们的所谓“我们”吧。
xen0n

xen0n 回复 lemote1

能出现态度相对理性的另一方观点,我很赞赏。不清楚 lemote1 是不是 Lemote 员工(根据发言,有可能是,但基本上都是推自家的 linux-official 库,scope 有些值得怀疑),但无论如何,能去上游看代码,熟悉正确的协作流程,总归是一件好事。我呼吁有技术实力的人多碰撞交流思想,听听不同阵营的观点,对所有人都好。
lemote1

lemote1 回复 xen0n

本人确实是在推Lemote的代码,但不代表本人在拆Loongson的台,请不要混为一谈。本人是Loongson的忠实盟友,其观点是:Loongson官方确实代码质量堪忧,因此有必要引入一定的内部竞争(比如Lemote)。一方面让大家知道Loongson并不是那么的差劲,另一方面敦促Loongson官方改进自身。
顶lemote1
lemote1

lemote1 回复 xen0n

不过回到你的问题本身,内核的o32部分貌似改全了啊,你说的32位问题具体指哪一处?
xen0n

xen0n 回复 lemote1

scall32-o32.S,给龙芯2/3编译的时候貌似根本不给开CONFIG_32BIT,所以文中说无关;但理论上是要改的。(实际上问题应该在 glibc,不过我没有深究了。文章是我一开始严重怀疑内核的时候气不过写的。)
lemote1

lemote1 回复 xen0n

现在你是开不了config_32bit,因为龙芯3很多寄存器用32位无法表达。龙芯3的内核必须是64位的,只不过支持32位的userspace。
xen0n

xen0n 回复 lemote1

嗯,这个当然明白。我记得《龙芯用户手册》里提到一些特权模式寄存器是有用到高32位的,具体哪些我忘了。。。显然32位不够用。但站在 MIPS 而非龙芯的角度看,那个文件就是要改的了。
lemote1

lemote1 回复 xen0n

你说的也对也不对。为什么对呢,从完备性上讲就是要改32位的;为什么又不对呢,因为他们这个3.10.84本身就是loongson only的,否则这种backport根本就是不允许的。
lemote1

lemote1 回复 xen0n

你说的也对也不对。为什么对呢,从完备性上讲就是要改32位的;为什么又不对呢,因为他们这个3.10.84本身就是loongson only的,否则这种backport根本就是不允许的。
xen0n

xen0n 回复 lemote1

没错,就是这个意思
那个。。。。4.14呢?
你有病。连人都不会认。见到不跪舔你的人就是我?
你这人纯靠脑补为生了,赶紧去医院吧。
有毛病的是你,你有能耐写新的,别我写什么,你就写什么。
哦,你只会说假大空,有意义的话全都不会说。
4.14一直有,不过有一阵子没同步到外网了,现在已经推送到http://dev.lemote.com/cgit/linux-official.git/,master分支就是4.14的。
好啦,不要再吐槽内核了,你要什么版本我就给你什么版本,至于loongson官方的千年2.6.32,万年3.10就无视掉好了。
不过编译器问题你可以继续使劲吐槽,反正我不懂也不负责编译器。
为什么loongson维护的代码不upstream?像kvm那块好像也没
看他之前回复。。。。个人认为还是有可信度的,除了某些补丁质量还可以更高之外,并不全是龙芯工作者自己的原因。
1、代码质量,2、上游不作为?
关键都没有commot到mips patchwork啊,上游怎么给你合并?
lemote1

lemote1 回复 xen0n

今天就上传了几个到patchwork,然而maintainer继续冬眠。
还有个小要求,能否跟上 kernel.org 的小版本更新?其实我不是绝对要求大版本能跟上,主要是因为现在编译环境,总是动不动的就要求内核版本。而且现在 amd 的开源驱动,也都只能指望最新版的内核。尤其是最近几个版本 radeon 驱动更新很频繁。还有如果可以,能否给个能作为通用发行版需要的配置文件,我真的懒得去配内核了。
当然,现在不是强制要求,因为我连基本系统都没编译出来。ARCH 我放弃了,别人谁接坑那就是谁的事情了。

至于编译器。好吧,那我只能先凑合用 gcc 4.x 和 5.x 了。
反正我前几天编译 fc27 的结果,只能格盘重新来了。
因为编译出来的 dbus 和 perl 运行就是段错误。
两个非常重要的软件包,编译出来运行是段错误你说这怪谁。。。
我记得 KVM 部分,mips 官方有自己的扩展,不知道龙芯的 KVM 是自己的开始用 mips 官方的。如果是官方的,那要等 mips 官方了。如果是龙芯自己的,我怀疑可能这辈子没戏了。
好吧我错了。现在还是一样,gcc 版本 4.9.3 20150626 (Red Hat 4.9.3-7) (GCC)

+ cd Algorithm-Diff-1.1903
+ perl Makefile.PL INSTALLDIRS=vendor
/var/tmp/rpm-tmp.yDNUB5: line 31: 31231 Segmentation fault (core dumped) perl Makefile.PL INSTALLDIRS=vendor
错误:/var/tmp/rpm-tmp.yDNUB5 (%build) 退出状态不好
我们内部是跟上小版本更新的,不过不是实时同步到外面。如有需求,以后我们会提高更新频度。
暂时我不用,别人不一定,时不时的出来同步一下吧。
我现在首要的问题就是 perl 段错误的问题。你们内部谁有空试一下吧。
loongnix 直接编译 fc27 和 26update 里面的试试。
我这里很奇怪的这两个版本(fc27是 5.26.1,fc26 是 5.24.x )都是编译后perl -V 没问题,但是再用它编译很多 perl 的包都会报错。
perl段错误问题可联系下heiher
perl段错误问题可联系下heiher
看 /proc/cpuinfo 应该是龙芯支持官方的 VZ 扩展指令集,只不过 Kconfig 里没对龙芯 3A2000+ 打开支持。这个就两行改动貌似,不过我没测
你编译器打了 128 位访存优化补丁,但内核没打 gssq/gslq 指令不对齐模拟执行补丁的话,大概一半动态链接的程序都会段错误,因为 __dl_runtime_resolve 这个函数入口是手写的 MIPS 汇编代码,没考虑必须对齐。。。这个补丁我都想给自己的编译器 revert 掉了
再议了,目前还没见到挑 perl 版本的软件。顶多是缺少新的依赖。忽略能编译过。
等我把整个系统编译全,能自持后再说。
现在的问题是 webkit 的 JIT 不支持。而且 qt 里面的 webkit 也不支持,这东西有些自带的 webkit 不提供关闭 JIT 的功能。
还有就是 atlas 居然编译到后面,就死机。也只能凑合先用 loongnix 的。
唉。
目前用的是 4.4.77-2.fc21.loongson.2.mips64el 内核,loongnix 的。
chroot 过去编译的。
这东西没问题吧……
段错误我现在真不清楚到底怎么回事,因为之前编译 arch ,他的 perl 正常。
我怀疑是别的地方有问题。

要回复文章请先登录注册