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

Linux(Ubantu)交叉编译生成windows(32位,64位)可执行程序和库 与 mingw32 相比,mingw-w64 提供了对 64 位 Windows 应用程序的支持,并且通常被认为是更现代和更新的工具。这个选项通常用于 Unix-like 系统的编译器,用以指导链接器在生成可执行文件时保留符号信息,以便支持运行时的符号解析(例如用于动态加载库).该选项对于 Windows 下的编译是无效的,通过。(能够解析windows平台的可执行程序) 则能直接允许直接在linux环境中运行我们生成的win32的可执行程序(包括验证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下开发使用了。

基于Linux开源VOIP系统LinPhone[五] 在《 基于Linux开源VOIP系统LinPhone[四] 》中,简单的介绍了readline、osip、eXosip以及ncurses库的编译,如果需要编译linphone的话,当然在编译speex的时候,可能还需要一个第三方库libogg,不过也可以不用它,那么怎么做呢,我可以打开源码,来修改一下。 阅读详情

相关推荐

Ubuntu下libevent安装与高并发优化指南

事件驱动架构是现代高性能服务器的核心技术之一,其核心原理是通过I/O多路复用机制(如epoll、kqueue)实现单线程处理大量并发连接。libevent作为该领域的经典库,封装了不同操作系统的底层事件通知机制,为Nginx、Memcached等知名软件提供基础支持。在工程实践中,正确安装和配置libevent对系统稳定性至关重要,特别是在需要支持HTTPS加密通信或处理高并发TCP连接时。本文以Ubuntu 22.04 LTS为例,详细解析从源码编译到生产环境部署的全流程,涵盖openssl依赖处理、国产

weixin_30920853的博客 363

libtool简介

一. libtool的工作原理  libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtool是gcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。libtool只与后缀名为lo、la的l

moonlightfall的博客 1万+

libtool编译(rv1126)

下载地址。

qq_39200110的博客 377

libtool 源码编译与使用

例如,使用 libtool --mode=compile 和 libtool --mode=link 来编译和链接库,libtool 会根据目标平台自动选择正确的编译和链接选项。通过这些功能,libtool 大大简化了共享库的管理和使用,使得开发者可以专注于应用程序的开发,而不必担心底层平台的差异。Libtool 生成的包装器脚本可以自动处理符号链接和库路径,确保程序在开发和安装后都能正确找到所需的库。注意一个概念,libtool 库文件,后缀为la,是一个抽象了静态库和动态库的高层概念,库文件。

eloudy的专栏 2678

SDL 1.2.14 源码编译与环境搭建:跨平台开发实战指南

跨平台多媒体库是游戏开发、模拟器及教学项目的技术基石,其核心在于通过统一的API抽象底层音视频与事件系统。SDL作为经典代表,通过头文件与库文件的分离设计,实现了编译期与链接期的环境解耦。掌握源码编译与环境配置,不仅能解决老项目复现中的依赖问题,更能深入理解2D渲染与事件循环的底层机制。在Windows与Linux下,利用Visual Studio工程或autotools脚本,配合sdl-config工具,可高效完成从源码到动态库的构建。本文以SDL 1.2.14为例,详解源码树结构、编译参数及常见避坑技巧

weixin_33895695的博客 378

jnetpcap源码编译指南:JNI层深度调试与BPF协议解析

jnetpcap 是 Java 生态中少数能直连 libpcap C ABI 的网络抓包库,其核心价值在于 JNI 绑定层对底层数据平面的可控访问。理解 pcap 编译原理、BPF 过滤器生成机制及原始帧解析逻辑,是实现 DPI 引擎定制、工业协议逆向和协议模糊测试的前提。本文围绕 jnetpcap-src-1.4.r1425 源码包,详解从 JDK 头文件配置、libpcap 静态链接到 JNI 动态库构建的完整链路,并深入剖析 BPF 指令提取、以太网帧手动解包与自定义协议注册等关键技术路径,适用于需在

weixin_34150830的博客 385

libtool编译

   o: 编译的目标文件a: 静态库,其实就是把若干o文件打了个包so: 动态链接库(共享库)lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息补充:libtool1 libtool的工作原理 libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统

rubyzhudragon的专栏 2090

GDAL 1.11.5 mingw32 编译指南:从环境配置到链接排错

GDAL 是地理空间数据抽象库,用于栅格与矢量格式的读写转换。其编译依赖工具链、第三方库与平台宏的精确匹配,在 32 位 Windows 下使用 mingw32 构建时,configure 参数与链接选项尤为关键。正确配置可生成稳定的 gdal111.dll 与导入库,支撑老旧 GIS 桌面项目、地图切片工具及工控机环境中的格式解析与坐标转换。本文围绕 GDAL 1.11.5 与 mingw32 工具链,拆解源码准备、configure 参数、编译避坑与产物集成,帮助开发者完成可复用的编译流程。

weixin_33834137的博客 326

CLucene动态库编译实战:解决C++ ABI兼容性与符号导出问题

动态链接库(Shared Library)是现代C++工程实现ABI隔离、内存共享和热更新的核心机制。其本质是通过运行时符号解析与位置无关代码(PIC)技术,在不同编译标准(如C++11/C++17)间构建兼容桥梁。技术价值体现在避免静态链接导致的name mangling冲突、ODR违规及重复内存加载。典型应用场景包括跨语言封装(Python/Qt)、微服务共享检索引擎、嵌入式资源受限环境。本文聚焦CLucene这一经典C++全文检索引擎,深入剖析其从静态默认构建到生产级动态库的演进路径,重点解决符号可见

weixin_34008784的博客 202

从厘米级到公里级:北斗网格10级精度在ArcPro中的完整应用指南

本文提供了北斗网格十级精度体系在ArcGIS Pro中的完整应用指南。详细解析了从660公里到1.5厘米的十级网格尺度及其编码逻辑,并重点演示了如何在ArcPro中生成网格、计算编码,以及根据项目需求(如滑坡监测)选择合适精度层级的实战策略。指南旨在帮助GIS专业人士利用这套统一的网格框架,高效管理多尺度空间数据并优化分析工作流。

Black的专栏 471

SkyWalking跨线程Trace传递实战:手把手教你用RunnableWrapper解决异步链路中断问题

本文深入解析了SkyWalking在异步编程场景下链路追踪中断的根源,并提供了使用RunnableWrapper等官方包装类的实战解决方案。通过详细的原理解析和代码示例,手把手指导开发者如何实现跨线程的Trace传递,确保分布式系统监控链路的完整性,有效解决异步任务导致的链路中断问题。

sand8的博客 493

源码编译安装git过程记录

源码编译安装git过程记录

liji_digital的博客 1077

群晖NAS搭建Git Server避坑指南:从SSH配置到权限管理的完整流程

本文提供了一份详尽的群晖NAS搭建Git Server实战指南。文章从启用并安全配置SSH服务入手,深入解析了用户权限体系设计、SSH连接与仓库初始化、客户端SSH密钥配置等核心步骤,并提供了常见错误排查与生产环境加固方案,帮助开发者成功构建私有、安全的代码托管平台。

rock5的博客 420

从零构建 OpenToonz:GNU/Linux 源码编译与开发环境搭建完全指南

OpenToonz 是一款开源的全功能 2D 动画制作软件,其 Linux 版由 C++17 编写、基于 Qt 5 构建,支持从源码完整编译。本文以仓库官方文档 [doc/how_to_build_linux.md](https://link.gitcode.com/i/792eedef8bb5e6af8676287a53be6ffa) 为核心骨架,逐条讲解 GNU/Linux 下的依赖安装、Li

gitblog_00291的博客 191

从时序参数到电压供给:TTL(RGB)液晶屏驱动调试全解析

本文全面解析TTL(RGB)液晶屏驱动调试的关键技术,从时序参数配置到电压供给系统搭建,详细介绍了同步信号参数、寄存器配置技巧以及升压电路设计。通过实战案例和常见故障分析,帮助工程师快速掌握液晶显示屏调试方法,提升开发效率。

weixin_30588675的博客 247

QCC5125/QCC5144----LDAC 44.1K 48K 96K 192K 输出

QCC5125/QCC5144----LDAC 44.1K 48K 96K 192K 输出。而且还不需要license限制。

Alex_886的博客 1975

CLucene编译动态库实战:跨语言调用C++全文检索引擎

动态库是实现C++高性能模块跨语言复用的核心技术路径,其本质是通过ABI稳定接口封装底层实现,解决链接可见性、内存布局兼容与符号导出等系统级问题。CLucene作为轻量级C++全文检索引擎,天然缺乏对.so/.dll的官方支持,导致Python、Java、C#等语言无法直接调用其倒排索引与查询能力。本文聚焦‘CLucene动态库化’这一工程刚需,详解如何通过CMake精细化控制符号可见性、强制C ABI接口、隔离STL跨边界传递,并在x86_64/Linux、ARM64/嵌入式、Windows多平台完成实测

weixin_34082695的博客 418

C#上位机+YOLO工业视觉全实战:从ONNX部署到产线缺陷检测落地(2026年工业级实战指南)

在2026年,工业视觉落地的核心挑战不是“能不能做”,而是“能不能在产线实时跑起来C#为何成为最优解?

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 731

stlink 从源码编译完整指南:Windows MSVC、Linux 与交叉构建实战

本文是 stlink(Open source STM32 MCU programming toolset,开源 STM32 编程/烧录工具集)的源码编译实战指南,覆盖 Windows(MSVC)、Linux 两大平台的标准构建流程、Windows 交叉编译、udev 设备权限配置与构建选项调优。读完本文,你将能够在 Windows 与 Linux 上独立完成 `st-flash`、`st-info

gitblog_00525的博客 775

C++(Qt)软件调试---内存分析工具Heob(26)

绝对最全面最详细的Heob使用说明。(图文并茂) 绝大部分的文章都说Heob是一个内存泄漏分析工具,其实Heob只是内存泄漏分析功能比较突出,实际上Heob可以分析很多内存问题。 Heob是一个Windows下检测缓冲区溢出(野指针、空指针、内存越界、重复释放、异常捕获等)和内存泄漏的工具,集成到Qt Creator中,功能强大,简单容易上手。

mahuifa的博客 4312

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ANUBIS双平台安装:Linux编译部署与Windows客户端配置

ANUBIS是一款面向恶意软件动态行为分析的开源沙箱系统,其核心依赖GNU Autotools构建体系与gnuplot可视化引擎。理解autogen.sh生成configure脚本的原理,是掌握Linux源码编译部署的关键;而Windows端稳定运行则高度依赖Miniconda构建的纯净Python环境,以规避MSVC版本、ABI兼容性及lxml等C扩展包的加载冲突。该系统采用Linux服务端(anubis-daemon)+ Windows客户端的异构架构,技术价值在于提供可审计、可复现、可二次开发的行为分

weixin_33966095的博客 358

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Ubuntu 下 SDL2 安装配置:apt、源码编译与 pkg-config

SDL2 是跨平台底层多媒体库,把窗口、渲染、音频、输入等系统接口封装为一套 C API。在 Ubuntu 等 Linux 环境中,依赖解析、头文件路径、动态库链接与后端选择,直接决定程序能否编译运行。pkg-config 和 CMake/Makefile 把编译链接参数标准化,apt 适合快速安装 libsdl2-dev,源码编译适合版本定制、交叉编译或裁剪驱动。游戏原型、模拟器、媒体播放器等场景,常要面对 X11、Wayland、软件渲染与无图形会话差异。因此,系统掌握 Ubuntu 下 SDL2 安装

weixin_34379433的博客 364

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

HoloCubic LvglSimulator 内嵌 SDL2 的 Linux 构建依赖与输入设备排查指南

本文以仓库中 [SDL2 Linux 平台文档](https://link.gitcode.com/i/6ed0ae58b41719de824ca51fd1c96889) 为主体,讲解 SDL2 在 Linux 上的默认链接策略、完整构建依赖安装方法以及基于 `evtest`/`udev` 的摇杆不识别排查流程;并结合 HoloCubic 仓库中 LVGL 桌面模拟器实际调用 SDL API 的源

gitblog_00944的博客 311

跨平台网络库部署实战:从零到一在 Linux 与 Windows 上跑通 ENet(附避坑清单)

如果你正在做一个需要实时联机的项目,那么"跨平台网络库 ENet"这个名字,值得你先花十分钟了解一下。它是一套建立在 UDP 之上的轻量可靠通信方案,今天的文章不打算给你一本说明书,而是带你走一遍"从克隆源码到双端联调"的真实路径——包括那些最容易让你抓狂的坑。 ## 一、开场:上线前夜,服务器没事,客户端却集体失联 想象这样一个深夜:距离演示只剩 8 小时,你们的服务器跑在 Linux 上,

gitblog_00928的博客 236

Ubuntu下libevent安装指南与常见问题解决

事件驱动编程是现代网络应用开发的核心范式之一,其通过I/O复用机制实现高并发处理能力。libevent作为轻量级高性能网络库,封装了epoll、kqueue等系统调用,为开发者提供统一接口。在Linux-Ubuntu环境中,正确安装libevent需要处理依赖管理、版本兼容等工程问题。本文详细介绍通过apt安装预编译版本和源码编译两种方式,特别针对OpenSSL依赖缺失、版本冲突等典型问题提供解决方案。对于需要定制化功能或性能优化的场景,还涉及调试符号启用、组件选择性编译等高级配置技巧,帮助开发者在生产环境

weixin_33866037的博客 369
上一篇: Linux环境下交叉编译 GmSSL库
下一篇: Window,VS开发:CString 转 char*
力宁
博客等级 码龄12年 13粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值