- 论坛徽章:
- 2
|
在slackware10.1下面编译NetBSD release
发现,NetBSD的结构实在是太不可思议了, orz
没有看见guide上说可以在Linux上编译,不过还是成功了。
前提:
Linux带有native 的编译器gcc ,但是版本不能是4.x,因为交叉编译gnu里面的gcc时,会出现lvalue的问题。当然,有能力的朋友可以修改gcc源码来避免这个问题。我试了试,找不出原因 
方法:
1 在ftp.netbsd.org 下载syssrc.tgz sharesrc.tgz src.tgz gnusrc.tgz四个代码包
2 如果原有Linux系统下有/usr/sys的话,需要自己备份
3 解压上面四个包,放在/usr/src下,我的方法是:mv syssrc.tgz / ; tar -zxf syssrc.tgz ; rm syssrc.tgz (当然比较笨)
4 确定build.sh在/usr/src目录下 (或许需要chmod +x build.sh,最新的NetBSD源码发布不需要)
5 mkdir /usr/obj
6 cd /usr/src
7 ./build.sh -m i386 tools 编译工具,-m指定平台为i386
8 ./build.sh -u -m i386 kernel=GENERIC 编译内核, -u 告诉build.sh脚本已经有了tools,不需要upgrade
9 ./build.sh -u -m i386 kernel=GENERIC releasekernel=GENERIC release 编译userland 发布版本
8,9步是包含关系,如果仅编译内核,就可以不要第9部步,如果需要连userland一起编译,则可以跳过第8步。
最新的netbsd源代码的build.sh还可以制作iso镜像,前提是Linux系统中装有mkiso软件包。(似乎是叫这个名字)
./build.sh -u -m i386 kernel=GENERIC releasekernel=GENERIC release iso (就像上面的8,9一样,是一些操作的集合)
另外,还可以制作交叉编译器(不少做嵌入式的朋友觉得这个很麻烦)
./build.sh -m evbarm tools 这样可以得到一个arm的交叉编译器
./build.sh -m sparc64 tools 这样可以得到一个sparc64的交叉编译器
这样就得到了Linux平台下的交叉编译器。
同时pkgsrc也是跨OS的机制。NetBSD的结构,orz
[ 本帖最后由 gvim 于 2006-4-6 19:23 编辑 ] |
|