LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1202|回复: 8

为何crossdev制作出来的交叉编译工具链没有g++?

[复制链接]
发表于 2008-4-13 22:19:07 | 显示全部楼层 |阅读模式
我运行的命令行是:
crossdev -s4 -S arm-elf-linux-gnu

不过,制作出来的只有gcc。下面是输出:

chris ~ # crossdev -s4 -S arm-elf-linux-gnu
------------------------------------------------------------------------------------------------------------------------------------
* Host Portage ARCH:     x86
* Target Portage ARCH:   arm
* Target System:         arm-elf-linux-gnu
* Stage:                 4 (C/C++ compiler)

* binutils:              binutils-[stable]
* gcc:                   gcc-[stable]
* headers:               linux-headers-[stable]
* libc:                  glibc-[stable]

* PORTDIR_OVERLAY:       /usr/portage/local/layman/gentoo-china
* PORT_LOGDIR:           /var/log/portage
* PKGDIR:                /usr/portage/packages/cross/arm-elf-linux-gnu
* PORTAGE_TMPDIR:        /var/tmp/cross/arm-elf-linux-gnu
  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -  _  -  ~  -
* Using sys-devel/binutils from /usr/portage instead of /usr/portage
* Using sys-devel/gcc from /usr/portage instead of /usr/portage
* Using sys-kernel/linux-headers from /usr/portage instead of /usr/portage
* Using sys-libs/glibc from /usr/portage instead of /usr/portage
* Using sys-devel/gdb from /usr/portage instead of /usr/portage
* Using dev-util/insight from /usr/portage instead of /usr/portage
* Forcing the latest versions of {binutils,gcc}-config/gnuconfig ...                                                         [ ok ]
* Log: /var/log/portage/cross-arm-elf-linux-gnu-binutils.log
* Emerging cross-binutils ...                                                                                                [ ok ]
* Log: /var/log/portage/cross-arm-elf-linux-gnu-gcc-stage1.log
* Emerging cross-gcc-stage1 ...                                                                                              [ ok ]
* Log: /var/log/portage/cross-arm-elf-linux-gnu-linux-headers.log
* Emerging cross-linux-headers ...                                                                                           [ ok ]
* Log: /var/log/portage/cross-arm-elf-linux-gnu-glibc.log
* Emerging cross-glibc ...                                                      [ ok ]
* Log: /var/log/portage/cross-arm-elf-linux-gnu-gcc-stage2.log
* Emerging cross-gcc-stage2 ...                                                                                              [ ok ]
chris ~ #

最后生成的只有这么些个东西

bigcat@chris ~/work/arm/root/soft/openssh-4.7p1 $ arm-elf-linux-gnu-
arm-elf-linux-gnu-addr2line  arm-elf-linux-gnu-gcc        arm-elf-linux-gnu-ld         arm-elf-linux-gnu-readelf
arm-elf-linux-gnu-ar         arm-elf-linux-gnu-gcc-4.2.3  arm-elf-linux-gnu-nm         arm-elf-linux-gnu-size
arm-elf-linux-gnu-as         arm-elf-linux-gnu-gccbug     arm-elf-linux-gnu-objcopy    arm-elf-linux-gnu-strings
arm-elf-linux-gnu-c++filt    arm-elf-linux-gnu-gcov       arm-elf-linux-gnu-objdump    arm-elf-linux-gnu-strip
arm-elf-linux-gnu-cpp        arm-elf-linux-gnu-gprof      arm-elf-linux-gnu-ranlib     



thx
发表于 2008-4-13 22:41:56 | 显示全部楼层
-s4应该是有g++的
找vapier吧
回复 支持 反对

使用道具 举报

发表于 2008-4-13 22:43:00 | 显示全部楼层
-s4应该是有g++的
找vapier吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 09:27:33 | 显示全部楼层

thx

我制作arm-unknown-linux-gnu的工具链就有g++了
可能是elf的只有gcc.
回复 支持 反对

使用道具 举报

发表于 2008-4-14 09:51:31 | 显示全部楼层
我做的都有,不过用的是gnueabi,貌似现在arm最好用eabi吧
回复 支持 反对

使用道具 举报

发表于 2008-4-14 10:07:02 | 显示全部楼层
我做的一个 arm 和一个mipsel的都是全的,实在难得看到有人在讨论这个呀,顶一下
至于生成g++ , 默认就是s4的嘛, crossdev 看一下帮助就能出来信息了,很好用,一个命令下去就等着编译好的工具链了,太方便了,如果楼主想折腾嵌入式方面的话,可以google  openembedded,这个鸟东东是参考gentoo portage来设计的,目前 openmoko(一个开源手机项目)就用的是openembedded来搭的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 10:35:02 | 显示全部楼层
TO楼上:
我试过默认和+了-s4参数,arm-elf-linux-gnu出来的都是没有g++。。

谢谢楼上两位的建议。openembbed、EABI还真的没听过
回复 支持 反对

使用道具 举报

发表于 2008-4-14 11:50:49 | 显示全部楼层
如果crossdev自动不行不妨手动做,这里有一篇以前写的文档:

                          gentoo crossdev mini howto

$Id$

1. set PORTATE_OVERLAY in /etc/make.conf

        echo "ORTDIR_OVERLAY=/usr/local/portage" >> /etc/make.conf

2. emerge crossdev

        emerge -av crossdev

3. select CTARGET (powerpc for instance here), Setup 'categories'.

        mkdir -p /etc/portage
        echo cross-powerpc-unknown-linux-gnu >> /etc/portage/categories

4. make neccessary package symlinks

        mkdir -p /usr/local/portage/cross-powerpc-unknown-linux-gnu
        cd /usr/local/portage/cross-powerpc-unknown-linux-gnu
        ln -s /usr/portage/sys-devel/binutils binutils
        ln -s /usr/portage/sys-devel/gcc gcc
        ln -s /usr/portage/sys-kernel/linux-headers linux-headers
        ln -s /usr/portage/sys-libs/glibc glibc

5. emerge binutils

  about USE flags, please look at [1]

        emerge -av cross-powerpc-unknown-linux-gnu/binutils

6. emerge bootstrap gcc (Pass 1)

  make sure only "nocxx" and "bootstrap" are selected:

        USE="nocxx bootstrap -fortran -mudflap -nls" emerge -av cross-powerpc-unknown-linux-gnu/gcc

  also use gcc-config to select the new (cross) gcc:

          gcc-config -l # to list gccs
        gcc-config XXX

7. emerge linux-headers

        emerge -av cross-powerpc-unknown-linux-gnu/linux-headers

8. emerge glibc

        emerge -av cross-powerpc-unknown-linux-gnu/glibc

  make sure "nptl ntplonly" is in USE flags if you wan't nptl.

        USE="ntpl nptlonly" emerge -av cross-powerpc-unknown-linux-gnu/glibc

9. emerge gcc (Pass 2), with c and c++ compilers:

  make sure "nocxx" is not set, you could also enalbe "nls" or "mudflap" if
  you like.

        emerge -av cross-powerpc-unknown-linux-gnu/gcc

10. build stuff

  When you go to emerge packages, you should just need to do:
   ROOT=/blah/ CHOST=powerpc-unknown-linux-gnu emerge cpio
   - you should also set CBUILD to your building machine for
     completeness sake ... most of the time you won't need it,
     but sometimes you will
   - CTARGET is no longer needed so don't set it !
  
  If you want to cross compile a kernel, do this:
   make ARCH=powerpc CROSS_COMPILE=powerpc-unknown-linux-gnu-

[1] for step 6, the USE flags should better have "nocxx bootstrap" and no
other flags, they are tested to work on my system. other than step 6, the USE
flags is not abitrary so we could keep it as same as the host system as
possible.

.ref: http://dev.gentoo.org/~vapier/CROSS-COMPILE-HOWTO
回复 支持 反对

使用道具 举报

发表于 2008-4-14 12:44:31 | 显示全部楼层
用crossdev 构建交叉系统方案,我上回卡在一半就没做下去了,也没什么人对这个感兴趣
然后就弄了一下openembedded,发现里面考虑到这个问题,把lib弄到一个指定目录,然后在bbfile里面找lib时指向指定的目录,打补丁也很方便的在SRC_URI里面定义,我觉得会ebuild的朋友一般很快能上手bbfile,当然,学bbfile的时候学一下ebuild觉得相当的有帮助,楼上的兄台要是构建成功的话能否把步骤说一说,因为交叉平台无法 chroot过去,能emerge 很多包了,但遇到库的问题就卡住了,要是这步通了的话我都想在朋友弄的mips的嵌入式板子上跑跑这个通过强大的portage生成的嵌入式系统
顶起来,有关注的朋友加入呀

注意一下,我没试过elf,莫非真的没有? 好办法,楼主弄一个unkonw试一下就对比出来了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表