免费注册 查看新帖 |

Chinaunix

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

高手帮我看看这个Makefile中怎样添加库进去? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-17 13:46 |只看该作者 |倒序浏览
CROSS=mipsel-linux-

CC=$(CROSS)gcc
LD=$(CROSS)ld
OBJCOPY=$(CROSS)objcopy
OBJDUMP=$(CROSS)objdump

# Set this to "n" for production (disabling UART output)
USE_UART = y

# Set this to "y" for signature block support
# When it's "n" XENV will be used instead
USE_SIGBLOCK = n

ifeq ($(USE_SIGBLOCK),y)
USE_XENV = n
else
USE_XENV = y
endif

SHELL=/bin/bash
internal_hex = 0x$(shell printf "%x" $$[$(1)])

INCS=-I.
# CFLAGS=-D_32_ -Wall -Werror -Wstrict-prototypes -O2 -G 0 -mno-abicalls -fno-pic -fno-builtin -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap
# For GCC that supports MIPSr2
CFLAGS=-D_32_ -Wall -Werror -Wstrict-prototypes -Wsign-compare -O2 -G 0 -mno-abicalls -fno-pic -fno-builtin -mabi=32 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap

ifeq ($(USE_UART),n)
CFLAGS+=-DUART_DISABLED
endif

ifneq ($(RMCFLAGS),)
CFLAGS+=$(RMCFLAGS)
else
# For Tango2 chip, default
CFLAGS+= -DEM86XX_CHIP=EM86XX_CHIPID_TANGO2
# For Tango3 chip
# CFLAGS+= -DEM86XX_CHIP=EM86XX_CHIPID_TANGO3
# For which revision? ES1-6=1-6, RevA-C=65-67, default is 6.
ifneq ($(EM86XX_REVISION),)
CFLAGS+= -DEM86XX_REVISION=$(EM86XX_REVISION)
else
ifneq '$(filter -DEM86XX_CHIP=EM86XX_CHIPID_TANGO3, $(CFLAGS))' ''
CFLAGS+= -DEM86XX_REVISION=1
else
CFLAGS+= -DEM86XX_REVISION=6
endif
endif
endif

ifneq ($(RELEASE_NAME),)
CFLAGS+= -DRELEASE_NAME=\"$(RELEASE_NAME)\"
endif

ifneq '$(filter -DEM86XX_CHIP=EM86XX_CHIPID_TANGO3, $(RMCFLAGS))' ''
include emhwlib_registers_tango3.inc
include emhwlib_dram_tango3.inc
# To be re-defined later
ZBOOT_MEM_BASE=0x10000000
else
# default with Tango2
include emhwlib_registers_tango2.inc
include emhwlib_dram_tango2.inc
ZBOOT_MEM_BASE=$(MEM_BASE_dram_controller_0)
endif

CFLAGS+= -DZBOOT_MEM_BASE=$(ZBOOT_MEM_BASE)

# Start address of KSEGX, either 0x80000000 (KSEG0), or 0xa0000000 (KSEG1)
KSEG0ADDR=0x80000000
KSEG1ADDR=0xa0000000
KSEGXADDR=$(KSEG0ADDR)

# Start address of stage0 (either 0x9fc00000 or 0xbfc00000, depends on KSEGXADDR)
STAGE0_ADDR=$(call internal_hex,$(KSEGXADDR)+0x1fc00000)

# Start address of stage1 (in DRAM, has to be larger than or equal to 0x90010000 due to memcfg data structure)
STAGE1_ADDR=$(call internal_hex,$(KSEGXADDR)+$(ZBOOT_MEM_BASE)+$(FM_ZBOOT))

# The size of signature block plus 20bytes sha1sum
IMG_OFFSET=212

TARGETS = zboot.bin

ifeq ($(USE_XENV),y)
CFLAGS += -DCONFIG_XENV_SUPPORT
BUILD_SCRIPT=./build_xload.bash
ifneq '$(filter -DWITH_PROD=1 -DWITH_FACSPROD=1, $(RMCFLAGS))' ''
CERT_ID=000b
#CERT_ID=0009
CERT_TYPE=ES4_prod
else
CERT_ID=000a
CERT_TYPE=ES4_dev
endif
TARGETS += xrpc_xload_zboot_$(CERT_TYPE).bin
else
ifeq ($(USE_SIGBLOCK),y)
CFLAGS += -DCONFIG_SIGBLOCK_SUPPORT
TARGETS += zboot.img
endif
endif

CFLAGS+=$(INCS)

COMMON_C=uart.c util.c vsprintf.c xenv.c full_sha1.c fastsha1.c
STAGE0_C=mt_utils.c mt_elementary.c mt_tests.c stage0_main.c
STAGE1_C=main.c romfs.c zboot.c xload.c kunzip.c

SRC_H=$(wildcard *.h)
SRC_S=$(wildcard *.S)

COMMON_O=$(notdir $(patsubst %.c, %.o, $(COMMON_C)))
STAGE0_O=$(notdir $(patsubst %.c, %.o, $(STAGE0_C)))
STAGE1_O=$(notdir $(patsubst %.c, %.o, $(STAGE1_C)))

OBJ_S=$(notdir $(patsubst %.S, %.o, $(SRC_S)))

OBJS=$(STAGE1_O) $(STAGE0_O) $(COMMON_O) $(OBJ_S)
SRC_H += Makefile

all: $(TARGETS)

clean:
        rm -f $(OBJS) *.bin *.elf *.gz *.map *.dasm *.img *.xload

zboot.img.gz: zboot.img
        gzip -c9 $< > $@

zboot.bin.gz: zboot.bin
        gzip -c9 $< > $@

xrpc_xload_zboot_$(CERT_TYPE).bin: zboot.bin
        $(BUILD_SCRIPT) zboot $(CERT_ID) $(CERT_TYPE) 0x10800000

zboot.img: zboot.bin
        dd if=$< of=$@ bs=1 skip=$(IMG_OFFSET)

zboot.bin: stage1.bin stage0.bin
        cat stage0.bin stage1.bin > $@

stage0.elf: reset.o $(STAGE0_O) $(COMMON_O) stage0.ld.script
        $(LD) -T stage0.ld.script -Ttext $(STAGE0_ADDR) --defsym stage1_handler=$(STAGE1_ADDR) -o $@ -Map stage0.map reset.o $(STAGE0_O) $(COMMON_O)

stage0.dasm: stage0.elf
        $(OBJDUMP) -S --line-number $< > $@

stage0.bin: stage0.elf stage0.dasm
        $(OBJCOPY) -O binary $< $@

stage1.elf: $(STAGE1_O) $(COMMON_O) start.o libVerifier.o stage1.ld.script
        $(LD) -T stage1.ld.script -Ttext $(STAGE1_ADDR) -o $@ -Map stage1.map start.o  $(STAGE1_O) $(COMMON_O)

stage1.dasm: stage1.elf
        $(OBJDUMP) -S --line-number $< > $@

stage1.bin: stage1.elf stage1.dasm
        $(OBJCOPY) -O binary $< $@

$(STAGE1_O) $(STAGE0_O) $(COMMON_O) : %.o : %.c $(SRC_H)
        $(CC) -c $(CFLAGS) -o $@ $<

start.o: start.S $(SRC_H)
        $(CC) -c $(CFLAGS) -D__ASSEMBLY__ -o $@ $<

reset.o: reset.S $(SRC_H) stage1.bin
        $(CC) -c $(CFLAGS) -D__ASSEMBLY__ -DSTAGE1_SIZE=$(shell cat stage1.bin | POSIXLY_CORRECT=y wc -c) -o $@ $<

我需要在stage1.bin中增加libVerifier.o,要怎么改?
PS:
我在$(LD) -T stage1.ld.script -Ttext $(STAGE1_ADDR) -o $@ -Map stage1.map start.o  $(STAGE1_O) $(COMMON_O)
这里加上libVerifier.o为什么没起到作用?

[ 本帖最后由 ksjok 于 2007-11-19 10:28 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-11-18 15:43 |只看该作者
高手哪去了。。。。。。。。。?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2007-11-19 09:00 |只看该作者
make 有文档,例子也有很多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP