首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NetBSD构建交叉编译NetBSD工具链

如何使用NetBSD构建交叉编译NetBSD工具链
EN

Stack Overflow用户
提问于 2015-11-28 22:43:20
回答 1查看 983关注 0票数 2

我有一个使用qemu创建的NetBSD VM,我正在尝试使用Hello World.c源代码附带的build.sh脚本编译一个简单的NetBSD程序,并使用交叉编译的工具链。但是,我无法让程序编译。

我用以下命令构建了工具链,

./build.sh -m evbarm tools

./build.sh -m evbarm -U distribution

上面的命令输出的结果,

代码语言:javascript
复制
===> Tools built to /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386
===> build.sh ended:   Sat Nov 28 12:52:34 CST 2015
===> Summary of results:
         build.sh command: ./build.sh -m evbarm tools
         build.sh started: Sat Nov 28 12:48:47 CST 2015
         NetBSD version:   4.0
         MACHINE:          evbarm
         MACHINE_ARCH:     arm
         Build platform:   NetBSD 4.0.1 i386
         HOST_SH:          /bin/sh
         No nonexistent/bin/nbmake, needs building.
         Bootstrapping nbmake
         TOOLDIR path:     /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386
         DESTDIR path:     /opt/cross/evbarm/usr/src/destdir.evbarm
         RELEASEDIR path:  /opt/cross/evbarm/usr/src/releasedir
         Created /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386/bin/nbmake
         makewrapper:      /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386/bin/nbmake-evbarm
         Updated /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386/bin/nbmake-evbarm
         Tools built to /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386
         build.sh ended:   Sat Nov 28 12:52:34 CST 2015
===> .


make distribution started at:  Sat Nov 28 14:31:23 CST 2015
make distribution finished at: Sat Nov 28 15:04:34 CST 2015
===> Successful make distribution
===> build.sh ended:   Sat Nov 28 15:04:34 CST 2015
===> Summary of results:
         build.sh command: ./build.sh -m evbarm -U distribution
         build.sh started: Sat Nov 28 14:31:20 CST 2015
         NetBSD version:   4.0
         MACHINE:          evbarm
         MACHINE_ARCH:     arm
         Build platform:   NetBSD 4.0.1 i386
         HOST_SH:          /bin/sh
         No nonexistent/bin/nbmake, needs building.
         Bootstrapping nbmake
         TOOLDIR path:     /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386
         DESTDIR path:     /opt/cross/evbarm/usr/src/destdir.evbarm
         RELEASEDIR path:  /opt/cross/evbarm/usr/src/releasedir
         Created /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386/bin/nbmake
         makewrapper:      /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386/bin/nbmake-evbarm
         Updated /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386/bin/nbmake-evbarm
         Successful make distribution
         build.sh ended:   Sat Nov 28 15:04:34 CST 2015
===> .

但是,当我尝试使用helloARM.c包装器编译nbmake-evbarm时,我得到了以下输出:

代码语言:javascript
复制
$ nbmake-evbarm ./helloARM
/opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386/bin/arm--netbsdelf-gcc -O2   -Werror    -nostdinc -isystem /opt/cross/evbarm/usr/src/destdir.evbarm/usr/include    -o ./helloARM ./helloARM.c 
/opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386/lib/gcc/arm--netbsdelf/4.1.2/../../../../arm--netbsdelf/bin/ld: crt0.o: No such file: No such file or directory
collect2: ld returned 1 exit status

*** Failed target:  ./helloARM
*** Failed command: /opt/cross/evbarm/usr/src/tooldir.NetBSD-4.0.1-i386/bin/arm--netbsdelf-gcc -O2 -Werror -nostdinc -isystem /opt/cross/evbarm/usr/src/destdir.evbarm/usr/include -o ./helloARM ./helloARM.c 
*** Error code 1

Stop.
nbmake: stopped in /home/capin/apps
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-21 02:19:14

不要将./路径前缀放在目标名称上。

也就是说,只要跑:

代码语言:javascript
复制
nbmake-evbarm helloARM

当然,我假设您在同一个目录中有一个Makefile,它看起来有点像这样,至少:

代码语言:javascript
复制
PROG = helloARM

.include <bsd.prog.mk>

您必须有这样一个本地Makefile,它使用标准的NetBSD宏,因为当没有makefile (或者makefile不使用适当的NetBSD宏,即<bsd.prog.mk>)时,使用的是默认的sys.mk宏,并且它们不包括访问目标系统的头部和库等所需的所有${DESTDIR}魔术。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33977283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档