免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4846 | 回复: 10
打印 上一主题 下一主题

编译内核时,Makefile是从哪里调用到GCC工具的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-20 15:13 |只看该作者 |倒序浏览
5可用积分
[root@rw stblinux-2.6.12-5.0]# make
/bin/sh: mipsel-linux-gcc: command not found
make: mipsel-linux-gcc: Command not found
mkdir -p include/linux/
awk -f /home/will/BCM97452/stblinux-2.6.12-5.0/scripts/dwarfh.awk /home/will/BCM97452/stblinux-2.6.12-5.0/include/linux/dwarf2.h > include/linux/dwarf2-defs.h
  CHK     include/linux/version.h
  UPD     include/linux/version.h
  SYMLINK include/asm -> include/asm-mips
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  SHIPPED scripts/kconfig/zconf.tab.h
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/kxgettext.o
  HOSTCC  scripts/kconfig/mconf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/lex.zconf.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf -s arch/mips/Kconfig
#
# using defaults found in .config
#
  SPLIT   include/linux/autoconf.h -> include/config/*
  CC      scripts/mod/empty.o
/bin/sh: mipsel-linux-gcc: command not found
make[2]: *** [scripts/mod/empty.o] Error 127
make[1]: *** [scripts/mod] Error 2
make: *** [scripts] Error 2

以上编译出错的原因是PATH的问题。

但我想弄清楚编译内核时,Makefile是从哪里调用到mipsel-linux-gcc的,我用find -type f|xargs grep -n "mipsel-linux-gcc"找不到相关信息

请大家研究一下。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2009-03-20 15:18 |只看该作者
Makefile文件里会指定使用什么编译器。编译器通常应该是在标准的bin路径下

论坛徽章:
0
3 [报告]
发表于 2009-03-20 15:35 |只看该作者

回复 #2 Godbach 的帖子

ARCH                ?= $(SUBARCH)
CROSS_COMPILE        ?=

HOSTCC          = gcc
HOSTCXX         = g++
HOSTCFLAGS      = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
HOSTCXXFLAGS    = -O2

# Make variables (CC, etc...)

AS              = $(CROSS_COMPILE)as
LD              = $(CROSS_COMPILE)ld
CC              = $(CROSS_COMPILE)gcc
CPP             = $(CC) -E
AR              = $(CROSS_COMPILE)ar
NM              = $(CROSS_COMPILE)nm
STRIP           = $(CROSS_COMPILE)strip
OBJCOPY         = $(CROSS_COMPILE)objcopy
OBJDUMP         = $(CROSS_COMPILE)objdump
AWK             = awk
GENKSYMS        = scripts/genksyms/genksyms
DEPMOD          = /sbin/depmod
KALLSYMS        = scripts/kallsyms
PERL            = perl
CHECK           = sparse

CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__
MODFLAGS        = -DMODULE
CFLAGS_MODULE   = $(MODFLAGS)
AFLAGS_MODULE   = $(MODFLAGS)
LDFLAGS_MODULE  = -r
CFLAGS_KERNEL   =
AFLAGS_KERNEL   =

从这个顶层Makefile里找不到跟mipsel-linux-gcc相关的内容,可能它调用到了,但是是怎么调用到的还看不清。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2009-03-20 15:39 |只看该作者
CC              = $(CROSS_COMPILE)gcc

这行代码里面应该是指定了CC代表使用那个编译器。
在这之前你应该指定CROSS_COMPILE

论坛徽章:
0
5 [报告]
发表于 2009-03-20 15:54 |只看该作者
没有指定就用现在默认的

论坛徽章:
0
6 [报告]
发表于 2009-03-20 16:00 |只看该作者
终于弄明白了!
顶层Makefile读取.config配置文件,按其配置会调用到子目录arch/mips/Makefile,其中有:
ifdef CONFIG_CPU_LITTLE_ENDIAN
32bit-tool-prefix       = mipsel-linux-
64bit-tool-prefix       = mips64el-linux-
32bit-bfd               = elf32-tradlittlemips
64bit-bfd               = elf64-tradlittlemips
32bit-emul              = elf32ltsmip
64bit-emul              = elf64ltsmip
else
32bit-tool-prefix       = mips-linux-
64bit-tool-prefix       = mips64-linux-
32bit-bfd               = elf32-tradbigmips
64bit-bfd               = elf64-tradbigmips
32bit-emul              = elf32btsmip
64bit-emul              = elf64btsmip
endif

ifdef CONFIG_MIPS32     
gcc-abi                 = 32
tool-prefix             = $(32bit-tool-prefix)
UTS_MACHINE             := mips
endif
ifdef CONFIG_MIPS64     
gcc-abi                 = 64
tool-prefix             = $(64bit-tool-prefix)
UTS_MACHINE             := mips64
endif

而顶层的CROSS_COMPILE        ?=
所以变量让arch/mips/Makefile按照配置赋值为mipsel-linux-gcc

正印证了那句话"Makefile的一切行为都按照.config的配置和kbuild的架构来进行"。哈哈,今天又进步了!!

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
7 [报告]
发表于 2009-03-20 16:03 |只看该作者
那句代码就是用来组成交叉编译器的全称

论坛徽章:
0
8 [报告]
发表于 2009-03-20 16:17 |只看该作者
Makefile中是指定了 CROSS_COMPILE , 就在 arch/mips/Makefile 这个文件中。


你贴的code里面并没有指定 CROSS_COMPILE  的地方。

不知道你是怎么理解出来的。

论坛徽章:
0
9 [报告]
发表于 2009-03-20 16:22 |只看该作者

回复 #8 xpl 的帖子

我以为贴上去了,不好意思。

arch/mips/Makefile里还有这句:

ifdef CONFIG_CROSSCOMPILE
CROSS_COMPILE           := $(tool-prefix)
endif

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
10 [报告]
发表于 2009-03-20 16:28 |只看该作者
原帖由 todayrw 于 2009-3-20 16:22 发表
我以为贴上去了,不好意思。

arch/mips/Makefile里还有这句:

ifdef CONFIG_CROSSCOMPILE
CROSS_COMPILE           := $(tool-prefix)
endif


这行代码就是指定你工具的前缀+gcc,正好就是你的交叉编译器的位置
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP