我从他们的主页“www.boost.org”下载了“boost”(1.40.0)源代码。 我安装了Linux(Ubuntu 9.04 Jaunty)并尝试从我的“LINUX”机器将boost库编译为“WINDOWS”版本(例如“.dll”,而不是“.so”)。
现在是一个重要的问题:
是否有可能从“LINUX”编辑“WINDOWS”BOOST图书馆(如果有人说“是”,我会相信他,只有他之前已经完成它将写在这里对我来说很有用的解决方案。对不起那种悲观情绪但是我试着做了3天而且到目前为止没有什么积极的事情)?
到目前为止,我已经用这种方式编译了c ++程序。 对于从Linux到Linux的编译,我使用了“gcc”(或“g ++”)编译器。 对于从Linux到Windows的编译,我使用了“i586-mingw32msvc-gcc”(或“i568-mingw32msvc-g ++”)编译器(例如,“mingw32”包中包含“Ubuntu”)。
所以这个策略我也想用来编译boost库,到目前为止我已经尝试了这个(在阅读了boost主页上的“入门”文章之后):
- 1。我从“root”boost源代码目录运行“bootstrap.sh”:
./bootstrap.sh
- 2。然后我在“project-config.jam”文件中更改了一件事(来自“using gcc;”):
using gcc : : i586-mingw32msvc-gcc ;
- 3。最后运行“bjam”可执行文件:
./bjam stage
但是我没有创建升级库的“Windows”版本,而是收到了很多错误消息。
有人能帮助我吗?
提前致谢。
Petike
答案 0 :(得分:10)
官方文档有cross compilation部分。将其与您正在进行的操作进行比较,有两个问题:
您指定i586-mingw32msvc-gcc并应指定i586-mingw32msvc-g ++。前者是一个C编译器,用于编译C ++代码库有点棘手; - )
您需要target-os = windows
请注意,有一个已知的错误 - 在创建静态库时,它们不会通过ranlib传递,而且mingw链接器对此特别不满。如果您打算使用静态库,则必须手动运行ranlib。
答案 1 :(得分:3)
这里有一个非常简单的程序可以遵循从linux到windows的交叉构建提升:
https://web.archive.org/web/20110604002004/http://www.vle-project.org/wiki/Cross_compilation_Win32
答案 2 :(得分:2)
这是我使用的命令。我测试了它们的升压1.46和1.49。
首先,在/ usr / i686-w64-mingw32 / bin中创建指向编译器的链接。您可以运行此脚本:
#!/bin/bash
binDir="/usr/bin"
destDir="/usr/i686-w64-mingw32/bin"
cd "$binDir"
mkdir -p "$destDir"
for name in $(ls i686-w64-mingw32*); do
newName=$(echo "$name" | sed 's/i686-w64-mingw32-//g')
if [ -f "$destDir/$newName" ]; then
rm "$destDir/$newName"
fi
ln -s "$binDir/$name" "$destDir/$newName"
done
然后,安装bjam。在ubuntu / debian上,它包含在“libboost1.48-dev”包中
apt-get install libboost1.48-dev
完成,成为root并运行
env PATH=/usr/i686-w64-mingw32/bin:$PATH bjam toolset=gcc target-os=windows variant=release threading=multi threadapi=win32 link=static --prefix=/usr/i686-w64-mingw32 -j 4 --without-mpi --without-python -sNO_BZIP2=1 -sNO_ZLIB=1 --layout=tagged install
完成!
答案 3 :(得分:0)
Boost根据您当前的系统对您的操作系统和当前版本进行假设。如果您要获取win32头文件,从include路径中删除所有linux头,然后尝试构建,该怎么办?
答案 4 :(得分:0)
这不是一个真正的答案,但是:不要!
交叉编译到一个完全不同的平台通常是****的巨大痛苦。
如果您尝试在同一台计算机上构建Windows二进制文件,比如打包,请使用带有Windows,mingw和相应脚本的虚拟机。
然后你甚至可以使用你的构建在vm等上运行自动化测试,这应该是一个巨大的优势。