实习公司的项目语言环境为Delphi, C和C++,原开发者用的开发环境是Delphi 6和Visual C++ 6.0。
个人比较习惯命令行下操作,也更喜欢使用GCC,所以这里写一下这个月在Windows下搭建环境的心得和遇到的一些问题。
Delphi
这个语言现在似乎比较少用,至少我在接手项目之前没怎么接触过这个语言。搭建环境时我下载了Delphi 2010,这个IDE功能挺完善的(相比Delphi 6),但是编译现有项目时总是提示缺少依赖,折腾了一两天依然没有解决,后使用Delphi 6编译成功。
但是Delphi 6是比较旧的软件,它的窗口都不能很好的合并在一起,对于代码中符号,函数和变量的跳转都不是很智能,很不适合用来研究源码。
所以现在现有的使用方式是,用Delphi 2010查看和编辑代码,用Delphi 6编译和构建。
Can’t create … EditorLineends.ttr
关闭Delphi 6再打开Delphi 2010就会报这个错,重启可以解决,但这样解决显然很笨 -。-
网上找到了相关的Workaround
1 | del %temp%\EditorLineEnds*.ttr |
执行这个脚本之后再打开Delphi 2010就没问题了,也可以下载相关开源工具,具体看前文中的链接。
C,C++
主程序是由Delphi编写的,主要负责一些业务逻辑以及界面的渲染,底层的数据采集等功能由C++编译成的DLL完成。
目前支持的操作系统是Windows XP和Windows 7
刚开始维护项目程序的时候,不是很想在Win 7虚拟机中搭建开发环境,于是想到了Cross Compile。
Linux下编译Win32应用程序
MinGW-w64这个项目就是为支持编译32位和64位的Windows二进制程序提供完整的运行环境。
我下载的是mingw-w32-bin_x86_64-linux_20131227.tar.bz2
这里面就是一整套跨平台编译工具链啦~
MinGW, Cygwin, MSYS2
Linux主系统编辑代码,编译构建之后传到Win 7虚拟机执行测试,这样还是比较麻烦的,于是开始折腾怎么在Windows上搭建相关的开发环境。
MinGW意为Minimalist GNU for Windows
,是将最小化的GNU工具包移植到Windows平台上。
Cygwin则是旨在Windows平台上支持Linux上大量的GNU和其他开源工具,让用户感觉在Linux环境中。
MSYS2是Windows上的软件分发和构建平台,它旨在和Cygwin,MinGW-w64一同为用户服务。
Git Bash and Win-builds
经过尝试我现在使用的是Git for Windows和Win-builds的组合。
Git for Windows
提供了Git命令行(Git Bash)和图形界面(Git GUI)。
同时它还打包了MinGW环境,所以安装这个软件之后,就可以在Git Bash中使用一些Linux中常用的命令了。
至于gcc这类的编译工具,我选择了Win-builds
这个软件,下载以后打开,选择想要安装的包,点击Process,等待其下载安装完成即可。
编译与构建
一个Makefile实例
Git Bash搭配MinGW的话,要使用mingw32-make,直接使用make的话会报错,具体原因暂时不明。
这里用一个项目中实际用到Makefile实例来讲解,搭配官方文档更好理解。
1 | # 使用说明: |
CMake这个项目这次只是简单了解了一下,它可以根据不同平台使用写好的不同配置来生成Makefile。
查看DLL的依赖
项目中程序带有一些依赖,这些依赖都是以DLL形式被主程序使用的。
自己编译DLL的话,有什么依赖自己都是清楚的。那么如果是使用的别人编译好的DLL呢?有什么方法可以查看DLL的依赖有哪些吗?
ldd在Windows环境下不太好用,部分依赖不能正常显示其名称。
图形界面的话,可以使用dependencywalker这个软件,命令行的话则可以用VC6中的dumpbin.exe。
Windows cmd下使用dumpbin /dependents target
Bash(模拟Linux环境,和Windows命令行下传参方式不同,所以命令不同)使用dumpbin -dependents target
这里target可以是exe,dll等格式。