{"id":141,"date":"2015-12-25T14:36:11","date_gmt":"2015-12-25T19:06:11","guid":{"rendered":"http:\/\/blog.thescorpius.com\/?p=141"},"modified":"2015-12-25T18:03:23","modified_gmt":"2015-12-25T22:33:23","slug":"cross-compile-qbittorrent-for-windows-on-linux-using-mxe","status":"publish","type":"post","link":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/","title":{"rendered":"Cross-Compile qBittorrent for Windows on Linux using MXE"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-209\" src=\"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg?resize=648%2C257\" alt=\"Cross-Compile\" width=\"648\" height=\"257\" srcset=\"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg?w=870&amp;ssl=1 870w, https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg?resize=300%2C119&amp;ssl=1 300w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/a><\/p>\n<p>It&#8217;s actually pretty easy to cross-compile <a href=\"http:\/\/qbittorrent.org\">qBittorrent<\/a> on Linux for Windows targets using <a href=\"http:\/\/mxe.cc\/\">MXE<\/a>, a cross environment based on the <a href=\"http:\/\/mingw-w64.org\/\">MinGW-w64<\/a> toolchain.<\/p>\n<p>The <a href=\"http:\/\/mingw-w64.org\/\">MinGW-w64<\/a> project is an improvement on the original <a href=\"http:\/\/www.mingw.org\">MinGW<\/a> (Minimalist GNU for Windows) project to support 64-bits targets. Currently MXE supports two MinGW-w64 targets:\u00a0i686-w64-mingw32 for 32-bits executables and\u00a0x86_64-w64-mingw32 for 64-bits executables.<\/p>\n<p>This is a guide to cross-compile <a href=\"http:\/\/qbittorrent.org\">qBittorrent<\/a>\u00a0on Linux for Windows 64-bits only. \u00a0As usual we&#8217;ll use Debian for this.<\/p>\n<p><!--more--><\/p>\n<h3>Configuring MXE<\/h3>\n<p>MXE is a cross environment that helps you cross-compile several Open Source libraries like Qt, OpenSSL, zlib, etc. This will make your life way easier if you want to cross-compile any of those projects. \u00a0Since qBittorrent uses Qt, boost, OpenSSL and zlib, we are going to tell MXE to cross-compile all those projects for us.<\/p>\n<p>First things first, we need to download MXE and install the dependencies. \u00a0To get the most recent version we use\u00a0<strong>git<\/strong> for this:<\/p>\n<pre class=\"lang:terminal decode:true\">naikel@debian ~\/git $ git clone https:\/\/github.com\/mxe\/mxe.git\r\nCloning into 'mxe'...\r\nremote: Counting objects: 30857, done.\r\nremote: Compressing objects: 100% (8\/8), done.\r\nremote: Total 30857 (delta 2), reused 0 (delta 0), pack-reused 30849\r\nReceiving objects: 100% (30857\/30857), 18.28 MiB | 346.00 KiB\/s, done.\r\nResolving deltas: 100% (18339\/18339), done.\r\nChecking connectivity... done.<\/pre>\n<p>MXE needs several dependencies and depending on what you want to cross-compile you might need some of them, but not all. \u00a0MXE will tell you what you haven&#8217;t installed yet in order to cross-compile a project. \u00a0Anyway for a list of\u00a0<strong>all<\/strong> dependencies you can go\u00a0<a href=\"http:\/\/mxe.cc\/#requirements\">here<\/a>.<\/p>\n<p>We should first compile the cross-compiler itself, but it&#8217;s going to be installed anyway if I just tell MXE to cross-compile Qt, because it needs it.<\/p>\n<p>We need to specify the target we want in an environment variable called MXE_TARGET. This target is x86_64-w64-mingw32.static.<\/p>\n<p>So let&#8217;s try to cross-compile Qt 5 (we just need qtbase) to see what happens:<\/p>\n<pre class=\"lang:terminal decode:true \">naikel@debian ~\/git $ cd mxe\r\nnaikel@debian ~\/git\/mxe $ make MXE_TARGETS=x86_64-w64-mingw32.static qtbase\r\n[using autodetected 4 job(s)]\r\n[check requirements]\r\nMissing requirement: autopoint\r\nMissing requirement: bison\r\nMissing requirement: flex\r\nMissing requirement: gperf\r\nMissing requirement: intltoolize\r\nMissing requirement: libtool\r\nMissing requirement: ruby\r\nMissing requirement: scons\r\nMissing requirement: gdk-pixbuf-csource<\/pre>\n<p>Looks like there&#8217;s some dependencies I haven&#8217;t installed yet. Since this is Debian I just need to issue:<\/p>\n<pre class=\"lang:terminal decode:true \">naikel@debian ~\/git\/mxe $ sudo apt-get install ruby\u00a0autopoint bison flex gperf\u00a0\\\r\n&gt; scons libtool-bin intltool\u00a0libgtk2.0-dev<\/pre>\n<p>And now everything is ready to cross-compile Qt 5 (qtbase only):<\/p>\n<pre class=\"lang:terminal decode:true \">naikel@debian ~\/git\/mxe $ make MXE_TARGETS=x86_64-w64-mingw32.static qtbase\r\n[using autodetected 4 job(s)]\r\n[build]     mxe-conf               x86_64-w64-mingw32.static                                             \r\n[done]      mxe-conf               x86_64-w64-mingw32.static                          4 KiB          0m4.042s\r\n[build]     pkgconf                x86_64-w64-mingw32.static                                             \r\n[done]      pkgconf                x86_64-w64-mingw32.static                          416 KiB        0m4.000s\r\n[build]     binutils               x86_64-w64-mingw32.static                                             \r\n[done]      binutils               x86_64-w64-mingw32.static                          431888 KiB     1m3.827s\r\n[download]  mingw-w64                                                                                    \r\n[no-build]  mingw-w64              x86_64-w64-mingw32.static                                             \r\n[download]  gcc                                                                                          \r\n[build]     gcc                    x86_64-w64-mingw32.static                                             \r\n[done]      gcc                    x86_64-w64-mingw32.static                          2418476 KiB    7m44.256s\r\n(...)<\/pre>\n<p>That takes a while as you might guess. Just leave it. But take a look again at the last 3 lines: the gcc compiler is being built as well and actually all the MinGW-w64 <strong>x86_64-w64-mingw32.static<\/strong> toolchain is going to be downloaded, compiled, and installed. Good!<\/p>\n<p>Also OpenSSL and zlib where downloaded, cross-compiled, and installed it as well. So all is left is boost and libtorrent. Let&#8217;s go with boost:<\/p>\n<pre class=\"lang:terminal decode:true\">naikel@debian ~\/git\/mxe $ make MXE_TARGETS=x86_64-w64-mingw32.static boost\r\n[using autodetected 4 job(s)]\r\n[download]  boost                                                                                        \r\n[build]     boost                  x86_64-w64-mingw32.static                                             \r\n[done]      boost                  x86_64-w64-mingw32.static                          594100 KiB     5m19.305s \r\n<\/pre>\n<p>I will configure libtorrent manually in the next step. That&#8217;s because I always want to try qBittorrent with several libtorrent versions, and if I use MXE to build libtorrent I will be stuck with 1.0.6. But if you don&#8217;t care about it just type:<\/p>\n<pre class=\"lang:terminal decode:true\">naikel@debian ~\/git\/mxe $ make MXE_TARGETS=x86_64-w64-mingw32.static libtorrent-rasterbar<\/pre>\n<p>And skip the next section.<\/p>\n<p>Finally add the MXE path to your path:<\/p>\n<pre class=\"lang:terminal decode:true\">naikel@debian ~\/git\/mxe $ export PATH=$PATH:$HOME\/git\/mxe\/usr\/bin<\/pre>\n<h3>Cross-Compile\u00a0libtorrent-rasterbar<\/h3>\n<p>To\u00a0cross-compile <a href=\"http:\/\/www.libtorrent.org\/\">libtorrent<\/a> you need to make a couple of minor changes. \u00a0Basically the problem is that Windows filesystem is case-insensitive, but Linux is case-sensitive. So things like:<\/p>\n<pre class=\"lang:c++ decode:true \">#include &lt;Windows.h&gt;<\/pre>\n<p>will fail miserably in Linux. \u00a0You will need to edit all the include files that have capital letters and maybe change things like this:<\/p>\n<pre class=\"lang:c++ decode:true \">#ifndef WIN32<\/pre>\n<p>to this<\/p>\n<pre class=\"lang:c++ decode:true \">#ifndef _WIN32<\/pre>\n<p>Since I was using libtorrent 1.0.6 I also had to change a bug in the code in file.cpp<\/p>\n<pre class=\"lang:c++ decode:true \">if (!GetFileAttributesEx(f.c_str(), GetFileExInfoStandard, &amp;data))\r\n<\/pre>\n<p>to<\/p>\n<pre class=\"lang:c++ decode:true \">if (!GetFileAttributesEx_(f.c_str(), GetFileExInfoStandard, &amp;data))\r\n<\/pre>\n<p>And we&#8217;re ready. We just need to specify\u00a0the target in the configure command and the location of the cross-compiled boost libraries:<\/p>\n<pre class=\"lang:terminal decode:true \">naikel@debian ~\/git\/libtorrent $ .\/configure --prefix=$HOME\/git\/mxe\/usr\/x86_64-w64-mingw32.static \\\r\n&gt; --disable-debug --host=x86_64-w64-mingw32.static --with-boost=$HOME\/git\/mxe\/usr\/x86_64-w64-mingw32.static\/<\/pre>\n<p>And after the configuration just compile it and install it under the MXE libraries directory:<\/p>\n<pre class=\"lang:terminal decode:true \">naikel@debian ~\/git\/libtorrent $ make install<\/pre>\n<p>&nbsp;<\/p>\n<h3>Cross-Compile qBittorrent<\/h3>\n<p>I had some problems with the <em>configure<\/em>\u00a0program while trying to cross-compile qBittorrent. This is what happens:<\/p>\n<pre class=\"lang:terminal decode:true\">naikel@debian ~\/git\/qBittorrent $ .\/configure --host=x86_64-w64-mingw32.static \\\r\n&gt; --with-boost=$HOME\/git\/mxe\/usr\/x86_64-w64-mingw32.static\/include\/boost \\\r\n&gt; --with-boost-libdir=$HOME\/git\/mxe\/usr\/x86_64-w64-mingw32.static\/lib --with-qt5\r\nchecking for x86_64-w64-mingw32.static-gcc... x86_64-w64-mingw32.static-gcc\r\nchecking whether the C compiler works... yes\r\n(...)\r\nchecking for (...)qmake... configure: error: cannot check for file existence when cross compiling<\/pre>\n<p>And the configure program couldn&#8217;t complete because of that. The file is there I&#8217;m not sure why it doesn&#8217;t want to check if it&#8217;s there when cross compiling. So I couldn&#8217;t find another way but to change the configure file:<\/p>\n<pre class=\"lang:diff decode:true \">@@ -4511,8 +4511,8 @@ $as_echo_n \"checking for $QT_QMAKE\/qmake... \" &gt;&amp;6; }\r\n if eval \\${$as_ac_File+:} false; then :\r\n   $as_echo_n \"(cached) \" &gt;&amp;6\r\n else\r\n-  test \"$cross_compiling\" = yes &amp;&amp;\r\n-  as_fn_error $? \"cannot check for file existence when cross compiling\" \"$LINENO\" 5\r\n+#  test \"$cross_compiling\" = yes &amp;&amp;\r\n+#  as_fn_error $? \"cannot check for file existence when cross compiling\" \"$LINENO\" 5\r\n if test -r \"$QT_QMAKE\/qmake\"; then\r\n   eval \"$as_ac_File=yes\"\r\n else\r\n<\/pre>\n<p>And also change the case of the #include entries that had capitalized letters on it.<\/p>\n<p>After that you need to remove the BOOST_NO_CXXX11_RVALUE_REFERENCES definition in src\/src.pro to avoid this:<\/p>\n<pre class=\"lang:terminal decode:true \">\/(...)\/boost\/optional\/optional.hpp:1010:5: error: 'reference_type_of_temporary_wrapper' does not name a type\r\n     reference_type_of_temporary_wrapper operator *() &amp;&amp; { return boost::move(this-&gt;get()) ; }\r\n     ^<\/pre>\n<p>And finally configure the libraries folders and names in the pri files. Here&#8217;s the diff for src\/src.pro:<\/p>\n<pre class=\"lang:diff decode:true \">diff --git a\/src\/src.pro b\/src\/src.pro\r\nindex 7a40bc6..92bf460 100644\r\n--- a\/src\/src.pro\r\n+++ b\/src\/src.pro\r\n@@ -4,7 +4,7 @@ CONFIG += qt thread silent\r\n \r\n # C++11 support\r\n CONFIG += c++11\r\n-DEFINES += BOOST_NO_CXX11_RVALUE_REFERENCES\r\n+# DEFINES += BOOST_NO_CXX11_RVALUE_REFERENCES\r\n \r\n # Windows specific configuration\r\n win32: include(..\/winconf.pri)<\/pre>\n<p>The diff for the winconf-mingw.pri file:<\/p>\n<pre class=\"lang:diff decode:true \">diff --git a\/winconf-mingw.pri b\/winconf-mingw.pri\r\nindex 0283d23..465e4cc 100644\r\n--- a\/winconf-mingw.pri\r\n+++ b\/winconf-mingw.pri\r\n@@ -22,17 +22,17 @@ RC_FILE = qbittorrent_mingw.rc\r\n \r\n # Adapt the lib names\/versions accordingly\r\n CONFIG(debug, debug|release) {\r\n-  LIBS += libtorrent \\\r\n-          libboost_system-mgw45-mt-d-1_47 \\\r\n-          libboost_filesystem-mgw45-mt-d-1_47 \\\r\n-          libboost_thread-mgw45-mt-d-1_47\r\n+  LIBS += libtorrent-rasterbar \\\r\n+          libboost_system-mt \\\r\n+          libboost_filesystem-mt \\\r\n+          libboost_thread_win32-mt\r\n } else {\r\n-  LIBS += libtorrent \\\r\n-          libboost_system-mgw45-mt-1_47 \\\r\n-          libboost_filesystem-mgw45-mt-1_47 \\\r\n-          libboost_thread-mgw45-mt-1_47\r\n+  LIBS += libtorrent-rasterbar \\\r\n+          libboost_system-mt \\\r\n+          libboost_filesystem-mt \\\r\n+          libboost_thread_win32-mt\r\n }\r\n \r\n LIBS += libadvapi32 libshell32 libuser32\r\n-LIBS += libcrypto.dll libssl.dll libwsock32 libws2_32 libz libiconv.dll\r\n+LIBS += libcrypto libssl libwsock32 libws2_32 libz libiconv\r\n LIBS += libpowrprof\r\n<\/pre>\n<p>And the diff for the winconf.pri file:<\/p>\n<pre class=\"lang:diff decode:true\">diff --git a\/winconf.pri b\/winconf.pri\r\nindex 73e7921..8448851 100644\r\n--- a\/winconf.pri\r\n+++ b\/winconf.pri\r\n@@ -10,13 +10,14 @@ INCLUDEPATH += $$quote(C:\/qBittorrent\/Zlib\/include)\r\nINCLUDEPATH += $$quote(C:\/qBittorrent\/openssl\/include)\r\n\r\n# Point this to the boost lib folder\r\n-LIBS += $$quote(-LC:\/qBittorrent\/boost_1_51_0\/stage\/lib)\r\n+#LIBS += $$quote(-LC:\/qBittorrent\/boost_1_51_0\/stage\/lib)\r\n# Point this to the libtorrent lib folder\r\n-LIBS += $$quote(-LC:\/qBittorrent\/RC_0_16\/bin\/)\r\n+#LIBS += $$quote(-LC:\/qBittorrent\/RC_0_16\/bin\/)\r\n# Point this to the zlib lib folder\r\n-LIBS += $$quote(-LC:\/qBittorrent\/Zlib\/lib)\r\n+#LIBS += $$quote(-LC:\/qBittorrent\/Zlib\/lib)\r\n# Point this to the openssl lib folder\r\n-LIBS += $$quote(-LC:\/qBittorrent\/openssl\/lib)\r\n+#LIBS += $$quote(-LC:\/qBittorrent\/openssl\/lib)\r\n+LIBS += $$quote(-L~\/git\/mxe\/usr\/x86_64-w64-mingw32.static\/lib)<\/pre>\n<p>And that&#8217;s it. We can configure qBittorrent and then run make and a 64-bits executable for Windows will be created in src\/release\/qbittorrent.exe.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s actually pretty easy to cross-compile qBittorrent on Linux for Windows targets using MXE, a cross environment based on the MinGW-w64 toolchain. The MinGW-w64 project is an improvement on the original MinGW (Minimalist GNU for Windows) project to support 64-bits targets. Currently MXE supports two MinGW-w64 targets:\u00a0i686-w64-mingw32 for 32-bits executables and\u00a0x86_64-w64-mingw32 for 64-bits executables. This [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[15,6,14],"tags":[16,17,18,10],"class_list":["post-141","post","type-post","status-publish","format-standard","hentry","category-cross-compile","category-linux","category-qbittorrent","tag-cross-compile","tag-linux","tag-mxe","tag-qbittorrent"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cross-Compile qBittorrent for Windows on Linux using MXE - Scorpius<\/title>\n<meta name=\"description\" content=\"How to cross-compile qBittorrent on Linux for Windows targets using\u00a0MXE, a cross environment based on the\u00a0MinGW-w64\u00a0toolchain. It&#039;s super easy!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cross-Compile qBittorrent for Windows on Linux using MXE - Scorpius\" \/>\n<meta property=\"og:description\" content=\"How to cross-compile qBittorrent on Linux for Windows targets using\u00a0MXE, a cross environment based on the\u00a0MinGW-w64\u00a0toolchain. It&#039;s super easy!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/\" \/>\n<meta property=\"og:site_name\" content=\"Scorpius\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-25T19:06:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-12-25T22:33:23+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg\" \/>\n<meta name=\"author\" content=\"TheScorpius666\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TheScorpius666\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/\"},\"author\":{\"name\":\"TheScorpius666\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/86f96e20f253dad7eb38d3c721a950de\"},\"headline\":\"Cross-Compile qBittorrent for Windows on Linux using MXE\",\"datePublished\":\"2015-12-25T19:06:11+00:00\",\"dateModified\":\"2015-12-25T22:33:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/\"},\"wordCount\":716,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/7b346c3545c12a84ffdf2a30dfc69501\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blog.thescorpius.com\\\/wp-content\\\/uploads\\\/2015\\\/12\\\/Cross-Compile2.jpg\",\"keywords\":[\"cross-compile\",\"linux\",\"mxe\",\"qbittorrent\"],\"articleSection\":[\"cross-compile\",\"linux\",\"qBittorrent\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/\",\"url\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/\",\"name\":\"Cross-Compile qBittorrent for Windows on Linux using MXE - Scorpius\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blog.thescorpius.com\\\/wp-content\\\/uploads\\\/2015\\\/12\\\/Cross-Compile2.jpg\",\"datePublished\":\"2015-12-25T19:06:11+00:00\",\"dateModified\":\"2015-12-25T22:33:23+00:00\",\"description\":\"How to cross-compile qBittorrent on Linux for Windows targets using\u00a0MXE, a cross environment based on the\u00a0MinGW-w64\u00a0toolchain. It's super easy!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blog.thescorpius.com\\\/wp-content\\\/uploads\\\/2015\\\/12\\\/Cross-Compile2.jpg?fit=870%2C345&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.thescorpius.com\\\/wp-content\\\/uploads\\\/2015\\\/12\\\/Cross-Compile2.jpg?fit=870%2C345&ssl=1\",\"width\":870,\"height\":345},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2015\\\/12\\\/25\\\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.thescorpius.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cross-Compile qBittorrent for Windows on Linux using MXE\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#website\",\"url\":\"https:\\\/\\\/blog.thescorpius.com\\\/\",\"name\":\"Scorpius\",\"description\":\"Random technology bits\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/7b346c3545c12a84ffdf2a30dfc69501\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.thescorpius.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/7b346c3545c12a84ffdf2a30dfc69501\",\"name\":\"Scorpius\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g\",\"caption\":\"Scorpius\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/86f96e20f253dad7eb38d3c721a950de\",\"name\":\"TheScorpius666\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g\",\"caption\":\"TheScorpius666\"},\"url\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/author\\\/thescorpius666\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cross-Compile qBittorrent for Windows on Linux using MXE - Scorpius","description":"How to cross-compile qBittorrent on Linux for Windows targets using\u00a0MXE, a cross environment based on the\u00a0MinGW-w64\u00a0toolchain. It's super easy!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/","og_locale":"en_US","og_type":"article","og_title":"Cross-Compile qBittorrent for Windows on Linux using MXE - Scorpius","og_description":"How to cross-compile qBittorrent on Linux for Windows targets using\u00a0MXE, a cross environment based on the\u00a0MinGW-w64\u00a0toolchain. It's super easy!","og_url":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/","og_site_name":"Scorpius","article_published_time":"2015-12-25T19:06:11+00:00","article_modified_time":"2015-12-25T22:33:23+00:00","og_image":[{"url":"http:\/\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg","type":"","width":"","height":""}],"author":"TheScorpius666","twitter_card":"summary_large_image","twitter_misc":{"Written by":"TheScorpius666","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/#article","isPartOf":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/"},"author":{"name":"TheScorpius666","@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/86f96e20f253dad7eb38d3c721a950de"},"headline":"Cross-Compile qBittorrent for Windows on Linux using MXE","datePublished":"2015-12-25T19:06:11+00:00","dateModified":"2015-12-25T22:33:23+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/"},"wordCount":716,"commentCount":2,"publisher":{"@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/7b346c3545c12a84ffdf2a30dfc69501"},"image":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg","keywords":["cross-compile","linux","mxe","qbittorrent"],"articleSection":["cross-compile","linux","qBittorrent"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/","url":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/","name":"Cross-Compile qBittorrent for Windows on Linux using MXE - Scorpius","isPartOf":{"@id":"https:\/\/blog.thescorpius.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/#primaryimage"},"image":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg","datePublished":"2015-12-25T19:06:11+00:00","dateModified":"2015-12-25T22:33:23+00:00","description":"How to cross-compile qBittorrent on Linux for Windows targets using\u00a0MXE, a cross environment based on the\u00a0MinGW-w64\u00a0toolchain. It's super easy!","breadcrumb":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/#primaryimage","url":"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg?fit=870%2C345&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2015\/12\/Cross-Compile2.jpg?fit=870%2C345&ssl=1","width":870,"height":345},{"@type":"BreadcrumbList","@id":"https:\/\/blog.thescorpius.com\/index.php\/2015\/12\/25\/cross-compile-qbittorrent-for-windows-on-linux-using-mxe\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.thescorpius.com\/"},{"@type":"ListItem","position":2,"name":"Cross-Compile qBittorrent for Windows on Linux using MXE"}]},{"@type":"WebSite","@id":"https:\/\/blog.thescorpius.com\/#website","url":"https:\/\/blog.thescorpius.com\/","name":"Scorpius","description":"Random technology bits","publisher":{"@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/7b346c3545c12a84ffdf2a30dfc69501"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.thescorpius.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/7b346c3545c12a84ffdf2a30dfc69501","name":"Scorpius","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g","caption":"Scorpius"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g"}},{"@type":"Person","@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/86f96e20f253dad7eb38d3c721a950de","name":"TheScorpius666","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g","caption":"TheScorpius666"},"url":"https:\/\/blog.thescorpius.com\/index.php\/author\/thescorpius666\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6SNpd-2h","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/posts\/141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/comments?post=141"}],"version-history":[{"count":64,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/posts\/141\/revisions"}],"predecessor-version":[{"id":207,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/posts\/141\/revisions\/207"}],"wp:attachment":[{"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/media?parent=141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/categories?post=141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/tags?post=141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}