看官方文档,go的编译器需要linux内核版本在2.6.23以上,那请问下,编译好的go可执行文件,对内核版本还有这个要求吗?

409 views
Skip to first unread message

vincent zhang

unread,
Nov 25, 2013, 10:05:37 PM11/25/13
to golang...@googlegroups.com
看官方文档,go的编译器需要linux内核版本在2.6.23以上,那请问下,编译好的go可执行文件,对内核版本还有这个要求吗?

我试着把编译好的可执行文件,放到了2.6.9内核上,也可以运行.

就是不知道,go在执行时对内核版本有啥要求?? 要是执行时低于 2.6.23 的话,会有什么影响?

Pengfei Xue

unread,
Nov 25, 2013, 10:32:43 PM11/25/13
to golang...@googlegroups.com
ldd go binary������û������Ŀ�����

On 11/26/2013 11:05 AM, vincent zhang wrote:
> ���ٷ��ĵ�,go�ı�������Ҫlinux�ں˰汾��2.6.23����,��������,����õ�go
> ��ִ���ļ�,�� �ں˰汾�������Ҫ����?
>
> �����Űѱ���õĿ�ִ���ļ�,�ŵ���2.6.9�ں���,Ҳ��������.
>
> ���Dz�֪��,go��ִ��ʱ���ں˰汾��ɶҪ��?? Ҫ��ִ��ʱ���� 2.6.23 �Ļ�,
> ����ʲôӰ��?
> --
> --
> ����: http://golang-china.org/
> IRC: irc.freenode.net #golang-china
> @golangchina
> ---
> ���յ����ʼ�����Ϊ������ Google ������̳�ġ�Golang-China����̳��
> Ҫ�˶�����̳��ֹͣ���մ���̳�ĵ����ʼ����뷢�͵����ʼ��� golang-
> china+un...@googlegroups.com��
> Ҫ�������ϲ鿴�����ۣ������ https://groups.google.com
> /d/msgid/golang-china/fb59548c-
> 6a95-4fd3-8fa1-09c0a372b515%40googlegroups.com��
> <https://groups.google.com/d/msgid/golang-china/fb59548c-6a95-4fd3-8fa1-09c0a372b515%40googlegroups.com%A1%A3>
> Ҫ�鿴���ѡ������ https://groups.google.com /groups/opt_out��
> <https://groups.google.com/groups/opt_out%A1%A3>

--
-
Pengfei.X

minux

unread,
Nov 25, 2013, 10:54:58 PM11/25/13
to golang...@googlegroups.com

有一个issue是要写这个的文档,不过被推迟到1.3了。

那个要求是所有Go自带的包正常工作需要最低的内核版本。
要想知道低版本内核啥会出什么问题,就在那个版本的内核上运行all.bash编译并测试一下,看看哪些测试失败了就知道了。

vincent zhang

unread,
Nov 25, 2013, 11:40:30 PM11/25/13
to golang...@googlegroups.com
期待这个issue尽快出.  是不是静态编译了的话,基本上在一般的内核都不会有啥问题呢???

在 2013年11月26日星期二UTC+8上午11时54分58秒,minux写道:

minux

unread,
Nov 26, 2013, 12:26:37 AM11/26/13
to golang...@googlegroups.com


On Nov 25, 2013 11:40 PM, "vincent zhang" <vince...@gmail.com> wrote:
> 期待这个issue尽快出.  是不是静态编译了的话,基本上在一般的内核都不会有啥问题呢???
不是。如果需要的系统调用没有怎么编译都没用。

Feng Shen

unread,
Nov 26, 2013, 4:01:09 AM11/26/13
to golang...@googlegroups.com
公司里面的古董系统, 用的是centos, 内核 2.6.18-238.el5

曾在上面运行go,直接core dump了 =》 没办法编译
在新内核上编译ok了,copy到老内核机器上运行, Segmentation fault。 是不work的。

后面找sa申请了新内核的机器。

vincentzhwg

unread,
Nov 26, 2013, 7:16:14 AM11/26/13
to golang...@googlegroups.com
现在用的我厂的机器内核是 2.6.9 的,也是纠结呀,比你的 2.6.18 还要旧呀



IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了 Google 网上论坛“Golang-China”中的主题。
要退订此主题,请访问 https://groups.google.com/d/topic/golang-china/__OaHV4nJ9E/unsubscribe。
要退订此论坛及其所有主题,请发送电子邮件到 golang-china...@googlegroups.com
要在网络上查看此讨论,请访问 https://groups.google.com/d/msgid/golang-china/54efba6b-bc6a-4300-bef2-8c54531df6ce%40googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。

minux

unread,
Nov 26, 2013, 8:39:59 AM11/26/13
to golang...@googlegroups.com


On Nov 26, 2013 4:01 AM, "Feng Shen" <she...@gmail.com> wrote:
>
> 公司里面的古董系统, 用的是centos, 内核 2.6.18-238.el5
>
> 曾在上面运行go,直接core dump了 =》 没办法编译
> 在新内核上编译ok了,copy到老内核机器上运行, Segmentation fault。 是不work的。

这个是内核的bug,只在一部分2.6.18-RHEL上存在。升级到最新版就能解决。
> 后面找sa申请了新内核的机器。

zeayes

unread,
Nov 29, 2013, 11:05:02 AM11/29/13
to golang...@googlegroups.com
跟我们公司机器的内核版本一模一样,现在只能跑golang1.0.3


在 2013年11月26日星期二UTC+8下午5时01分09秒,Feng Shen写道:

minux

unread,
Dec 2, 2013, 12:38:06 AM12/2/13
to golang...@googlegroups.com

2013/11/29 zeayes <zea...@gmail.com>
跟我们公司机器的内核版本一模一样,现在只能跑golang1.0.3
这个不难解决。你把 Go 1.2 的 src/pkg/runtime/sys_linux_amd64.s 里面
time·now 和 runtime·nanotime 两个函数替换成 Go 1.0.3 同一个文件里面的
版本应该就行了(汇编的语法很诡异,这个别管它,TEXT xxx就是xxx函数
的开始,直到下一个TEXT行就是一个完整的函数)。这么修改不会影响
性能(至少相关函数不会比1.0.3用的慢,新版Go用的是更快的版本,可是
RHEL 5有一部分内核VDSO里面的clock_gettime/gettimeofday使用了过多
的堆栈导致 goroutine 堆栈溢出之类的错误)

当然 最简单的办法是升级内核。即使是2.6.18 RHEL5的内核,新版也可以
正常运行新的 Go。
Reply all
Reply to author
Forward
0 new messages