windows下进行嵌入式系统开发工程管理编译方案
来源:互联网 发布:百度网盘vip淘宝 编辑:程序博客网 时间:2024/04/30 14:36
在windows下进行 arm工程管理及编译方案中,很多小项目均采用现有成熟大型的开发平台,如keil或者IAR,其优点是简单易上手,创建工程相对比较简单,并还提供相应的在线单步调试功能,但灵活性不好,无法自由配置;
基于此,使用bat批处理+makefile方案将自由灵活地解决arm嵌入式工程管理工作,其优点是可自由配置管理工程,无需依赖任何开发平台,但对工程师基本功要求较高,需要较深入理解makefile知识,具体事例如下:
bat批处理部分(build.bat):
set COMPILER_TOOLKIT=GCC
set GCC_BIN_PATH=C:\Progra~1\GNUARM.410\arm-elf\bin
set GCC_INC_PATH=C:\Progra~1\GNUARM.410\arm-elf\include -I C:\Progra~1\GNUARM.410\lib\gcc\arm-elf\4.1.0\include
set GCC_LIB_PATH=C:\Progra~1\GNUARM.410\arm-elf\lib -L C:\Progra~1\GNUARM.410\lib\gcc\arm-elf\4.1.0
set PATH=c:\make381;C:\Program Files\GNUARM.410\bin;C:\Program Files\GNUARM.410\arm-elf\bin;C:\Program Files\GNUARM.410\libexec\gcc\arm-elf\4.1.0
set VERSION=x.xx
del ..\code\inc\version.h
echo>>..\code\inc\version.h
set TARGET=xxx_project
make -s %1 all #%1则表示可以执行build.bat时可以传一个参数
BcmIamgeBuild xxx #执行完毕make工作后再可执行一些其他工作
objdump -d bin\%TARGET%_raw.elf >bin\asm1.txt
objdump -D bin\%TARGET%_raw.elf >bin\asm2.txt
objdump -t bin\%TARGET%_raw.elf >bin\sys.txt
makefile部分:
VERSION = 1.0.1f
OUTPUT = libopenssl($(VERSION)).a
BIN = bin
OBJ = obj
SRC =..\crypto
CROSS = arm-elf-
CC = $(CROSS)gcc
SIZE = $(CROSS)size
STRIP = $(CROSS)strip
OBJCOPY = $(CROSS)objcopy
AR = $(CROSS)ar
CFLAGS = -I..\crypto -I..\crypto\asn1 -I..\crypto\evp -I..\crypto\modes -I.. -I..\include\
LIBS += C:\Progra~1\GNUARM.410\arm-elf\lib\libc.a C:\Progra~1\GNUARM.410\lib\gcc\arm-elf\4.1.0\libgcc.a
VPATH += $(wildcard $(SRC)) $(wildcard $(SRC)/*) $(wildcard $(SRC)/*/*) $(wildcard $(SRC)/*/*/*)
#aes path
C_OBJECTS += aes_wrap.o aes_cbc.o aes_cfb.o aes_core.o aes_ctr.o aes_ecb.o aes_ige.o aes_misc.o aes_ofb.o aes_x86core.o
#asnl path
C_OBJECTS += a_strnid.o
C_OBJECTS += ameth_lib.o asn1_err.o asn1_gen.o asn1_lib.o asn1_par.o asn_mime.o asn_moid.o asn_pack.o a_bitstr.o a_bool.o
C_OBJECTS += a_bytes.o a_d2i_fp.o a_digest.o a_dup.o a_enum.o a_gentm.o a_i2d_fp.o a_int.o a_mbstr.o a_object.o a_octet.o
C_OBJECTS += a_print.o a_set.o a_sign.o a_strex.o a_time.o a_type.o a_utctm.o a_utf8.o a_verify.o bio_asn1.o
C_OBJECTS += bio_ndef.o d2i_pr.o d2i_pu.o evp_asn1.o f_enum.o f_int.o f_string.o i2d_pr.o i2d_pu.o nsseq.o n_pkey.o p5_pbe.o
C_OBJECTS += p5_pbev2.o p8_pkey.o tasn_dec.o tasn_enc.o tasn_fre.o tasn_new.o tasn_prn.o tasn_typ.o tasn_utl.o t_bitst.o
C_OBJECTS += t_crl.o t_pkey.o t_req.o t_spki.o t_x509.o t_x509a.o x_algor.o x_attrib.o x_bignum.o x_crl.o x_exten.o x_info.o
C_OBJECTS += x_long.o x_name.o x_nx509.o x_pkey.o x_pubkey.o x_req.o x_sig.o x_spki.o x_val.o x_x509.o x_x509a.o
#bf path
C_OBJECTS += bf_cbc.o bf_cfb64.o bf_ecb.o bf_enc.o bf_ofb64.o bf_skey.o
#bio path
#C_OBJECTS += bss_acpt.o bss_bio.o bss_conn.o bss_dgram.o
#C_OBJECTS += bf_buff.o bf_lbuf.o bf_nbio.o bf_null.o bio_cb.o bio_err.o bio_lib.o b_print.o bss_null.o bss_mem.o b_dump.o bss_file.o
#C_OBJECTS += bss_fd.o bss_file.o bss_log.o bss_null.o bss_rtcp.o bss_sock.o b_dump.o b_print.o b_sock.o
#bn path
C_OBJECTS += bn_add.o bn_asm.o bn_blind.o bn_const.o bn_ctx.o bn_depr.o bn_div.o bn_err.o bn_exp.o bn_exp2.o
C_OBJECTS += bn_gcd.o bn_gf2m.o bn_kron.o bn_lib.o bn_mod.o bn_mont.o bn_mpi.o bn_mul.o bn_nist.o bn_prime.o bn_print.o bn_rand.o
C_OBJECTS += bn_recp.o bn_shift.o bn_sqr.o bn_sqrt.o bn_word.o bn_x931p.o
#buffer path
C_OBJECTS += buffer.o buf_err.o buf_str.o
#camellia path
C_OBJECTS += camellia.o cmll_cbc.o cmll_cfb.o cmll_ctr.o cmll_ecb.o cmll_misc.o cmll_ofb.o cmll_utl.o
#cast path
C_OBJECTS += c_cfb64.o c_ecb.o c_enc.o c_ofb64.o c_skey.o
#camc path
C_OBJECTS += cmac.o cm_ameth.o cm_pmeth.o
#cms path
C_OBJECTS += cms_asn1.o cms_att.o cms_cd.o cms_dd.o cms_enc.o cms_env.o cms_err.o cms_ess.o cms_io.o cms_lib.o cms_pwri.o cms_sd.o cms_smime.o
#comp path
C_OBJECTS += comp_err.o comp_lib.o c_rle.o c_zlib.o
#comp path
C_OBJECTS += conf_api.o conf_def.o conf_err.o conf_lib.o conf_mall.o conf_mod.o conf_sap.o
#des path
#C_OBJECTS += read_pwd.o
C_OBJECTS += cbc3_enc.o cbc_cksm.o cbc_enc.o cfb64ede.o cfb64enc.o cfb_enc.o des_enc.o des_old.o des_old2.o
C_OBJECTS += ecb3_enc.o ecb_enc.o ede_cbcm_enc.o enc_read.o enc_writ.o fcrypt.o fcrypt_b.o ncbc_enc.o ofb64ede.o ofb64enc.o ofb_enc.o
C_OBJECTS += pcbc_enc.o qud_cksm.o rand_key.o read2pwd.o rpc_enc.o set_key.o str2key.o xcbc_enc.o
#dh path
C_OBJECTS += dh_ameth.o dh_asn1.o dh_check.o dh_depr.o dh_err.o dh_gen.o dh_key.o dh_lib.o dh_pmeth.o dh_prn.o
#dsa path
C_OBJECTS += dsa_ameth.o
C_OBJECTS += dsa_asn1.o dsa_depr.o dsa_err.o dsa_gen.o dsa_key.o dsa_lib.o dsa_ossl.o dsa_pmeth.o
C_OBJECTS += dsa_prn.o dsa_sign.o dsa_vrf.o
#dso path
C_OBJECTS += dso_beos.o dso_dl.o dso_dlfcn.o dso_err.o dso_lib.o dso_null.o dso_openssl.o dso_vms.o dso_win32.o
#ec path
#C_OBJECTS += ecp_nistp224.o ecp_nistp256.o ecp_nistp521.o
C_OBJECTS += ec2_mult.o ec2_oct.o ec2_smpl.o eck_prn.o ecp_mont.o ecp_nist.o ecp_nistputil.o
C_OBJECTS += ecp_oct.o ecp_smpl.o ec_asn1.o ec_check.o ec_curve.o ec_cvt.o ec_err.o ec_key.o ec_lib.o ec_mult.o
C_OBJECTS += ec_oct.o ec_pmeth.o ec_print.o
C_OBJECTS += ech_err.o ech_key.o ech_lib.o ech_ossl.o ec_ameth.o
#ecdsa path
C_OBJECTS += ecs_asn1.o ecs_err.o ecs_lib.o ecs_ossl.o ecs_sign.o ecs_vrf.o
#engine path
C_OBJECTS += eng_all.o eng_cnf.o eng_cryptodev.o eng_ctrl.o eng_dyn.o eng_err.o eng_fat.o eng_init.o eng_lib.o
C_OBJECTS += eng_list.o eng_openssl.o eng_pkey.o eng_rdrand.o eng_rsax.o eng_table.o tb_asnmth.o tb_cipher.o tb_dh.o tb_digest.o
C_OBJECTS += tb_dsa.o tb_ecdh.o tb_ecdsa.o tb_pkmeth.o tb_rand.o tb_rsa.o tb_store.o
#engine path
#C_OBJECTS += err_all.o
C_OBJECTS += err.o err_prn.o
#evp path
#C_OBJECTS += e_dsa.o
C_OBJECTS += p5_crpt2.o
C_OBJECTS += bio_b64.o bio_enc.o bio_md.o bio_ok.o c_all.o c_allc.o c_alld.o digest.o encode.o evp_acnf.o evp_cnf.o evp_enc.o
C_OBJECTS += evp_err.o evp_fips.o evp_key.o evp_lib.o evp_pkey.o e_aes.o e_aes_cbc_hmac_sha1.o e_bf.o evp_pbe.o
C_OBJECTS += e_camellia.o e_cast.o e_des.o e_des3.o e_idea.o e_null.o e_old.o e_rc2.o e_rc4.o e_rc4_hmac_md5.o e_rc5.o
C_OBJECTS += e_seed.o e_xcbc_d.o m_dss.o m_dss1.o m_ecdsa.o m_md2.o m_md4.o m_md5.o m_mdc2.o m_null.o m_ripemd.o m_sha.o m_sha1.o
C_OBJECTS += m_sigver.o m_wp.o names.o openbsd_hw.o p5_crpt.o pmeth_fn.o pmeth_gn.o pmeth_lib.o p_dec.o p_enc.o p_lib.o
C_OBJECTS += p_open.o p_seal.o p_sign.o p_verify.o
#hmac path
C_OBJECTS += hmac.o hm_ameth.o hm_pmeth.o
#idea path
C_OBJECTS += i_cbc.o i_cfb64.o i_ecb.o i_ofb64.o i_skey.o
#jpake path
#C_OBJECTS += jpake.o jpake_err.o
#krb5 path
C_OBJECTS += krb5_asn.o
#lhash path
C_OBJECTS += lhash.o lh_stats.o
#md2 path
C_OBJECTS += md2_dgst.o md2_one.o
#md4 path
C_OBJECTS += md4_dgst.o md4_one.o
#md5 path
C_OBJECTS += md5_dgst.o md5_one.o
#mdc2 path
C_OBJECTS += mdc2_one.o
#modes path
C_OBJECTS += cbc128.o ccm128.o cfb128.o ctr128.o ofb128.o xts128.o
#objects path
C_OBJECTS += obj_xref.o obj_dat.o obj_err.o obj_lib.o o_names.o
#ocsp path
C_OBJECTS += ocsp_asn.o ocsp_cl.o ocsp_err.o ocsp_ext.o ocsp_ht.o ocsp_lib.o ocsp_prn.o ocsp_srv.o ocsp_vfy.o
#pem path
C_OBJECTS += pem_all.o pem_err.o pem_info.o pem_lib.o pem_oth.o pem_pk8.o pem_pkey.o pem_seal.o pem_sign.o pem_x509.o pem_xaux.o pvkfmt.o
#pkcs7 path
#C_OBJECTS += bio_ber.o
#C_OBJECTS += bio_pk7.o example.o pk7_asn1.o pk7_attr.o pk7_dgst.o
#C_OBJECTS += pk7_doit.o pk7_enc.o pk7_mime.o pk7_smime.o pkcs7err.o
C_OBJECTS += pk7_lib.o
#pkcs12 path
#C_OBJECTS += p12_add.o p12_asn.o p12_attr.o p12_crpt.o p12_decr.o p12_init.o
#C_OBJECTS += p12_kiss.o p12_mutl.o p12_npas.o p12_p8d.o p12_p8e.o pk12err.o p12_utl.o
#C_OBJECTS += p12_crpt.o p12_key.o
#pqueue path
C_OBJECTS += pqueue.o
#rand path
#C_OBJECTS += rand_egd.o rand_nw.o rand_os2.o rand_vms.o rand_win.o
C_OBJECTS += md_rand.o randfile.o rand_err.o rand_lib.o rand_unix.o
#rc2 path
C_OBJECTS += rc2cfb64.o rc2ofb64.o rc2_cbc.o rc2_ecb.o rc2_skey.o
#rc4 path
C_OBJECTS += rc4_enc.o rc4_skey.o rc4_utl.o
#rc5 path
C_OBJECTS += rc5cfb64.o rc5ofb64.o rc5_ecb.o rc5_enc.o rc5_skey.o
#ripemd path
C_OBJECTS += rmd_dgst.o rmd_one.o
#rsa path
C_OBJECTS += rsa_ameth.o rsa_asn1.o rsa_chk.o rsa_crpt.o rsa_depr.o rsa_eay.o rsa_err.o rsa_gen.o rsa_lib.o rsa_none.o
C_OBJECTS += rsa_null.o rsa_oaep.o rsa_pk1.o rsa_pmeth.o rsa_prn.o rsa_pss.o rsa_saos.o rsa_sign.o rsa_ssl.o rsa_x931.o
#seed path
C_OBJECTS += seed.o seed_cbc.o seed_cfb.o seed_ecb.o seed_ofb.o
#sha path
C_OBJECTS += sha1dgst.o sha1_one.o sha256.o sha256t.o sha512.o sha512t.o sha_dgst.o sha_one.o
#srp path
C_OBJECTS += srp_lib.o srp_vfy.o
#stack path
C_OBJECTS += stack.o
#store path
#C_OBJECTS += str_err.o
#C_OBJECTS += str_lib.o str_mem.o str_meth.o
#threads path
#C_OBJECTS += th-lock.o
#ts path
C_OBJECTS += ts_asn1.o ts_conf.o ts_err.o ts_lib.o ts_req_print.o ts_req_utils.o ts_rsp_print.o ts_rsp_sign.o
C_OBJECTS += ts_rsp_utils.o ts_rsp_verify.o ts_verify_ctx.o
#txt_db path
C_OBJECTS += txt_db.o
#ui path
C_OBJECTS += ui_openssl.o
C_OBJECTS += ui_compat.o ui_err.o ui_lib.o ui_util.o
#whrlpool path
C_OBJECTS += wp_block.o wp_dgst.o
#x509 path
C_OBJECTS += by_dir.o by_file.o x509cset.o x509name.o x509rset.o x509spki.o x509type.o x509_att.o x509_cmp.o x509_d2.o
C_OBJECTS += x509_def.o x509_err.o x509_ext.o x509_lu.o x509_obj.o x509_r2x.o x509_req.o x509_set.o x509_trs.o x509_txt.o
C_OBJECTS += x509_v3.o x509_vfy.o x509_vpm.o x_all.o
#x509v3 path
C_OBJECTS += pcy_cache.o pcy_data.o pcy_lib.o pcy_map.o pcy_node.o pcy_tree.o v3err.o
C_OBJECTS += v3_addr.o v3_akey.o v3_akeya.o v3_alt.o v3_asid.o v3_bcons.o v3_bitst.o v3_conf.o v3_cpols.o v3_crld.o
C_OBJECTS += v3_enum.o v3_extku.o v3_genn.o v3_ia5.o v3_info.o v3_int.o v3_lib.o v3_ncons.o v3_ocsp.o v3_pci.o v3_pcia.o
C_OBJECTS += v3_pcons.o v3_pku.o v3_pmaps.o v3_prn.o v3_purp.o v3_skey.o v3_sxnet.o v3_utl.o
#crypto path
#C_OBJECTS += armcap.o cversion.o LPdir_nyi.o LPdir_unix.o LPdir_vms.o LPdir_win.o LPdir_win32.o LPdir_wince.o o_dir.o
#C_OBJECTS += o_str.o ppccap.o s390xcap.o sparcv9cap.o uid.o libc_api.o
#C_OBJECTS += cpt_err.o cryptlib.o ebcdic.o ex_data.o fips_ers.o mem_dbg.o
C_OBJECTS += mem.o mem_clr.o o_fips.o o_init.o
C_OBJECTS += o_time.o
OUTPUT := $(BIN)/$(OUTPUT)
C_OBJECTS_DDR = $(addprefix $(OBJ)/, $(C_OBJECTS))
all: $(C_OBJECTS_DDR)
$(AR) -r $(OUTPUT) $^
$(C_OBJECTS_DDR): $(OBJ)/%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
clean:
-rm -f $(OBJ)/*.* $(BIN)/*.*
- windows下进行嵌入式系统开发工程管理编译方案
- 嵌入式系统内存管理方案研究
- 嵌入式系统内存管理方案研究
- 【怎样在fans-rt上进行开发】1.windows 系统下 gcc 交叉编译环境搭建(cortex-m3)
- windows 下的嵌入式开发
- 如何在Windows系统下使用vim进行c开发
- Windows 系统下进行 Android 集成开发环境搭建
- 使用 QEMU 进行嵌入式系统开发
- 使用嵌入式 Linux 进行实时系统开发
- windows系统使用NDK编译jni工程
- 浅谈嵌入式车牌识别一体机的地磅管理系统方案
- 【Windows】Windows 8.1系统下如何对端口使用进行管理
- 打造windows下的嵌入式开发工具(8):让codeblocks调用bfin交叉编译
- windows下通过批处理编译VS工程
- windows下使用TortoiseGit管理github工程
- windows系统下_ffmpeg编译
- windows系统下_ffmpeg编译
- 为Windows CE平台开发嵌入式系统
- Android开发教程Tween动画实现代码
- matlab 图像处理相关的函数,非常有用
- 经验积累
- 百万并发电信级统一即时通讯(im+voip+多人语音)系统源码
- mysql在mac 10.9下不能用的问题
- windows下进行嵌入式系统开发工程管理编译方案
- 面向对象基础指数(6)重构 集合 拆装箱 泛型
- 经验积累
- 支持IE 360的收藏夹代码。
- GIS底层开发—GIS算法的一点理解
- 经验积累
- Zend Framework中遇到的问题和解决方法
- 在不同的环境中编译hello world程序
- Convnet在Windows下的使用