Libtool源码在Linux环境下编译成win32的动态库

1、linux下安装交叉编译器——mingw32

我用的是ubuntu虚拟机,直接使用终端命令安装即可:sudo apt-get install mingw32。

注意:如果此处安装失败,原因可能是Ubuntu系统的软件更新源有问题,换一下软件源即可。具体方法问度娘。

2、编译libtool

下载libtool源码

解压libtool软件包

进入解压后的lbtool目录,阅读readme或 install文件,查看详细介绍,或者直接./configure --help查看 配置文档的配方法。

生成libtool动态库
    ./configure --host=i586-mingw32msvc --prefix [指定目录] 
    ./make && make install
指令成功后,会在[指定目录]中会生成四个文件夹:lib、bin、include、share ,其中bin目录下会有一个*.dll文件,此动态库文件就是win32下可用动态库,将所有文件夹拷贝到windows下。

3、生成dll对应的lib文件


win32下使用动态库开发时,必须要有两个文件:库文件(*.dl)l和库索引文件(*.lib)。而此时生成的库文件只有dll文件。因此需要我们手动生成对应的lib。windows下的lib库索引文件是根据def文件生成的,因此要生成lib文件,首先是要生成def文件。我使用的是pexports工具。当然也可以使用 VS 自带的 dumpbin 生成 def 文件,具体方法可以自行搜索。

3.1、下载pexports工具

pexports工具是MinGW的庞大工具集中的一个,它可以根据win32下的dll动态库生成其对应def文件。其下载地址:https://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/,点击进入后如下图:

可以选择mingw-get-setup.exe工具,此工具可以用来下载MinGW的所有工具集的,由于我只需要pexports这个工具,因此选择最新的版本pexports-0.47。点击进入后如下图:

下载成功后,解压,就会得到这个工具了:pexports.exe

3.2 使用pexports工具生成dll对应的def文件

将解压得到的pexports.exe,复制到VC安装目录:如D:\Microsoft Visual Studio 10.0\VC\bin下。

打开cmd窗口,执行 pexports libtool.dll -o > libtool.def

如果提示“pexports 不是内部或外部命令,也不是可执行文件或批处理文件”,这说明你没有把 D:\Microsoft Visual Studio 10.0\VC\bin 这个目录添加到环境变量path中。如果懒得添加可以直接在命令窗口下直接cd到此目录下,然后使用pexports可执行文件。此时使用此命令时需要加上路径了,如:pexports D:\libtool.dll -o > D:\libtool.def。

3.3 使用lib工具生成 lib文件

lib工具是VS自带的工具,就在D:\Microsoft Visual Studio 10.0\VC\bin目录下。

在命令窗口执行命令:lib.exe /DEF:libtool.def /MACHINE:IX86 /OUT:libtool.lib,指令成功后会生成libtool.exp和libtool.lib两个文件;

lib命令说明:

usage: LIB [options] [files]

options:

/DEF[:filename] 
/EXPORT:symbol 
/EXTRACT:membername 
/INCLUDE:symbol 
/LIBPATH:dir 
/LIST[:filename]

/MACHINE:{AM33|ARM|EBC|IA64|M32R|MIPS|MIPS16|MIPSFPU|MIPSFPU16|MIPSR41XX|SH3|SH3DSP|SH4|SH5|THUMB|X86} 
/NAME:filename 
/NODEFAULTLIB[:library] 
/NOLOGO 
/OUT:filename 
/REMOVE:membername 
/SUBSYSTEM:{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER| 
EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS| 
WINDOWSCE}[,#[.##]] 
/VERBOSE

4、开发使用

生成lib文件后, *.dll和*.lib两个文件都有了,这个动态库就能在win32下开发使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值