当前位置: 首页 > news >正文

成都网站建设推广在线咨询云南云南省城乡建设厅网站

成都网站建设推广在线咨询,云南云南省城乡建设厅网站,奉化首页的关键词优化,企业咨询服务合同模板本文介绍如何为编译gmake编写Makefile文件 1 编写Makefile 根据前面所学内容编写Makefile如下,基本与前面所写的lua解释器的Makefile文件用法相同.注意生成文件为tcc-make.exe,除了名称有点差异,其他与前面生成make.exe完全相同。 # 编译gmake的Makefile# make_name为生成程…

本文介绍如何为编译gmake编写Makefile文件

1 编写Makefile

根据前面所学内容编写Makefile如下,基本与前面所写的lua解释器的Makefile文件用法相同.注意生成文件为tcc-make.exe,除了名称有点差异,其他与前面生成make.exe完全相同。

# 编译gmake的Makefile# make_name为生成程序的名称,可在批处理中进行设置
# 当没有设置make_name的值时,将make_name设置为tcc-make.exe
# 之所以不将将make_name设为make.exe,因为make.exe无法对make.exe进行处理
make_name ?= tcc-make.exe#设置警告信息和包含路径
include = -Wall -I src -I lib -I src/w32/include#设置编译常量
define = -D GMAKE_FOR_BUSYBOX  -D WINDOWS32 -D HAVE_CONFIG_H -D HAVE_STDINT_H -D HAVE_STRNICMP -D HAVE_UMASK -D WIN32_LEAN_AND_MEAN= -D ftruncate=_chsize -D _cdecl=#设置编译c代码路径,注意\*需写为\\*
src = lib\\*.c src\\*.c src\w32\\*.c src\w32\compat\\*.c src\w32\subproc\\*.c#设置链接库
lib = -luser32 -ladvapi32# 编译tcc-make.exe文件,默认指令,调用[link]编译指令
# 无论当前目录下是否存在tcc-make.exe文件,均可重新进行编译
build:link@rem 注释@echo 生成$(make_name)成功!# 编译tcc-make.exe文件
# 若当前目录下有tcc-make.exe文件,则不会编译
$(make_name):@tcc $(include) $(define) $(src) $(lib)  -o $(make_name)@echo 生成$(make_name)成功!#只编译,生成obj文件
compile:@rem 编译主要源码@tcc -c $(include) $(define) src\\*.c@rem 将main.o移动到lib目录下,主要为了后面编译静态库move main.o lib\main.o@rem 将misc.o重命名为misc1.o@rem 这步很关键,因为后面src\w32\subproc\misc.c也会编译为misc.o,导致这个misc.o被覆盖从而无法编译@move misc.o misc1.o@rem 编译其他源码@tcc -c $(include) $(define) lib\\*.c@tcc -c $(include) $(define) src\w32\\*.c@tcc -c $(include) $(define) src\w32\compat\\*.c@tcc -c $(include) $(define) src\w32\subproc\\*.c@echo 编译成功!# 进行链接,会先调用[compile]指令
link:compile@rem 对所有obj文件进行链接生成tcc-make.exe@tcc lib\main.o *.o $(lib) -o $(make_name)@echo 链接成功!# 生成静态链接库并生成tcc-make.exe
lib:compile@rem  生成静态链接库libmake.a@tcc -r  *.o  -o libmake.a@rem 使用静态链接库进行链接生成tcc-make.exe@tcc lib\main.o libmake.a $(lib) -o $(make_name)@echo 生成静态链接库并生成$(make_name)# 生成动态链接库并生成tcc-make.exe
dll:compile@rem 生成动态链接库make.dll@rem 注意需包含lib\main.o@tcc -shared -rdynamic lib\main.o *.o $(lib) -o make.dll@rem 只需make.def,不需要lib\main.o@tcc  make.def  -o $(make_name)@echo 生成动态链接库并生成$(make_name)# 显示tcc-make.exe的版本
v:$(make_name)@.\$(make_name) -v# 清除所有编译产生的文件
clean:@if exist $(make_name) del $(make_name)@if exist *.o del *.o@if exist lib\main.o del lib\main.o@if exist libmake.a del libmake.a@if exist make.dll del make.dll@if exist make.def del make.def@echo 清除所有编译产生的文件成功# 帮助
help:@echo   ------------------------------------@echo 这是一个使用tcc编译$(make_name)的Makefile脚本,具体用法如下@echo     make-生成直接生成$(make_name)@echo     make build-生成直接生成$(make_name)@echo     make lua.exe-若没有$(make_name)生成$(make_name)@echo     make run-运行$(make_name)@echo     make compile-编译所有c代码@echo     make link-链接所有c代码@echo     make lib-生成静态链接库并生成$(make_name)@echo     make dll-生成动态链接库并生成$(make_name)@echo     make clean-清除所有编译文件@echo     make v-显示$(make_name)版本@echo     中文用法见make 帮助@echo ------------------------------------# 中文化选项
# 实际上主要依靠执行依赖项build,编译指令为空指令
构建:build@rem
运行:run@rem
编译:compile@rem
链接:link@rem
静态:lib@rem
动态:dll@rem
清除:clean@rem
版本:v@rem
帮助:@echo   ------------------------------------@echo 这是一个使用tcc编译$(make_name)的Makefile脚本@echo   下面主要介绍中文指令用法,英文用法见make help@echo     make 构建-生成直接生成$(make_name)@echo     make 运行-运行$(make_name)@echo     make 编译-编译所有c代码@echo     make 链接-链接所有c代码@echo     make 静态-生成静态链接库并生成$(make_name)@echo     make 动态-生成动态链接库并生成$(make_name)@echo     make 清除-清除所有编译文件@echo     make 版本-显示lua版本@echo ------------------------------------

2 特别注意事项

之所以生成文件为tcc-make.exe,是因为将生成文件名称设为make.exe会有很多问题,下面进行讲解,首先这个Makefile可以通过make_name变量控制输出文件名称,如

:: 将输出文件名称设置为gmake.exe
set make_name=gmake.exe
::编译生成gmake.exe
make

在批处理窗口输入上面内容,即可生成gamke.exe
若想生成make.exe,可以这么输入

:: 将输出文件名称设置为make.exe
set make_name=make.exe
::编译生成make.exe
make

上诉命令可以生成make.exe,但是重复输入make则无法重新生成make.exe,错误信息如下
在这里插入图片描述
即make.exe无法对当前目录下的make.exe文件进行删除,提示权限不足.暂时没有好的解决办法.在执行其他命令时也会有这个问题.
只能先生成其他名字再手动更改为make.exe,其次还有另外一种办法解决,就是就是使用其他make程序,我在C:\run\tcc目录下将原先的make.exe复制一份名称改为tcc-make,重新回到gmake文件夹,在批处理窗口输入

:: 将输出文件名称设置为make.exe
set make_name=make.exe
::使用tcc-make编译生成make.exe
tcc-make
::再次编译生成make.exe覆盖原来的make文件
tcc-make

可以看出tcc-make.exe程序可以正常生成和处理make.exe,但是tcc-make.exe也同样无法删除tcc-make.exe,即make程序无法删除同名文件.

http://www.dtcms.com/a/417570.html

相关文章:

  • 聊天网站备案建设服装网站的论文
  • 网站开发发现趋势南昌网站排名优化软件
  • 品牌网站建设浩森宇特旅游景区网络推广方案
  • 网站无搜索结果页面怎么做沈阳网站怎么推广
  • 萧山区建设局网站php黄页系统
  • 百度站长工具是什么意思基于PHP网站开发的管理系统设计与开发
  • 涿州做软件和网站的深圳seo网络公司
  • 滴答手表网站网站建设和架构
  • 德宏州乡城建设局网站pc网站自动转换wap网站
  • 快站建站怎么收费的建设网银怎么提高转账限额
  • com域名注册1元铁岭网站seo
  • 网站制作 温州建设银行佛山分行网站
  • 青岛网站定制开发烟台网站建设哪家专业
  • 江门网站建设方案优化wordpress全局歌曲
  • 上海设计师网站有哪些秦皇岛房产局网签查询
  • 深圳最新消息今天新增病例怎么做网站的优化
  • 营销网站制作设计网站海外推广技巧
  • 门户网站建设和运行招标文件莱芜新闻头条
  • 国外网站翻墙怎么做文学网站开发
  • 互联网中厂有哪些公司东莞网站优化方法有哪些
  • 常用网站代码广州洲聚网站开发
  • 永久免费网站建设百度指数的使用方法
  • 茂名网站建设服务扬州新闻头条最新消息
  • 用ps怎么做网站步骤做网站的怎么获取客户信息
  • 网站建设 江苏做外汇应该看哪一家网站
  • 网站建设项目数智慧团建入口登录网站
  • 如何加强旅游电子商务网站的建设计算机网站建设与管理是什么
  • 做网站如何对接支付网站建设与建设
  • 营销网站建设的重要性网上开店的基本流程有哪些
  • 书店网站网站建设规划书一个网站可以同时几个主域名吗