使用mingw进行交叉编译时缺少库

时间:2014-08-10 21:40:47

标签: c++ linux windows mingw cross-compiling

我有时遇到这个问题:

1 - 我在Ubuntu Linux上为Ubuntu开发了一个可用的C ++ / C程序,它使用了一些库( 平台无关 ,如OpenSSL,Boost, GNU Scientific Library,DCMTK和其他:这些通常可以从apt-get获得,并且安装正确。)

2 - 我想使用mingw(x86_64-w64-mingw32-g ++)将程序从Ubuntu交叉编译到Windows上运行。

3 - mingw缺少图书馆。

是否有通用的方法可以轻松地转换"从linux-version(或源代码)到mingw安装的任何库,以便它可以用来构建一个程序的窗口?每个图书馆似乎都有自己独立的复杂安装说明。

3 个答案:

答案 0 :(得分:1)

您当然无法将Linux库直接转换为Windows,因为它们几乎肯定会使用Linux系统调用和调用特定于Linux的库(例如C运行时库)(即使代码不直接调用其他任何东西,编译器可以隐式添加函数调用,例如来自模板函数的内存分配调用等等)

您可以找到可以安装的“替换”Windows库,但是,很多可能附带Windows安装程序,这使得很难安装而不使用Wine或具有“真正的”Windows(但是你需要它来测试你的应用程序,所以我不确定它到底有多大的障碍)。

有些库可以使用mingw编译器作为Linux下的交叉编译器进行构建,如果它们是以便携方式编写的,这可能比安装现成的Windows库更容易。但它假设你可以找到来源......

答案 1 :(得分:0)

现在正在研究类似的东西,并遇到opensl,boost,sqlite,libpcap等库的问题

迄今为止找到的最佳解决方案是利用WSL2和Docker。

https://code.visualstudio.com/blogs/2020/03/02/docker-in-wsl2

WSL2是Windows的Linux环境(利用Hyper-V)。

Docker允许您为Windows和Linux制作可以相互通信的容器。

我有需要在Linux的WSL2下运行的基本代码,当我需要从Windows访问它时,我会使用Docker。

这不是一个完美的解决方案,但我希望它会有所帮助。

答案 2 :(得分:-1)

某些Linux程序可以通过Mingw在Windows上编译 以下是如何设置交叉编译环境: How to compile a Linux program with Mingw?