问题标签 [mxe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
392 浏览

cross-compiling - 如何通过 mxe 交叉编译 SEC256k1?

据我所知,MXE 中没有任何软件包,所以我必须设置自己的编译。

根据文档

如果您使用 Autotools,您所要做的就是:

./configure --host=i686-w64-mingw32.static

制作

而其他方法(修改makefile)总是以此结束

/root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/ libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x5c): undefined reference to inflate' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0xdf): undefined reference todeflate' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/.. /../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x13d): 未定义引用inflateEnd' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x159): undefined reference todeflateEnd' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/ libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x1c4): undefined reference to inflateEnd' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x1cf): undefined reference todeflateEnd' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/.. /../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x26b): 未定义的引用inflateInit_' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x2e0): undefined reference todeflateInit_' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../ lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x57a): 未定义引用deflate' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x658): undefined reference tozError' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/ ../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x846):未定义的引用deflate' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x8d8): undefined reference tozError' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../ lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0x940): undefined reference to deflateInit_' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0xa5e): undefined reference toinflate' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/ ../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0xac8):未定义的引用zError' /root/mxe/usr/lib/gcc/i686-w64-mingw32.static/5.1.0/../../../../i686-w64-mingw32.static/lib/../lib/libcrypto.a(c_zlib.o):c_zlib.c:(.text+0xb53): undefined reference toinflateInit_' collect2:错误:ld 返回 1 退出状态 Makefile:771:目标“tests.exe”的配方失败 make:*** [tests.exe] 错误 1

目前没有用于 mxe 的 SECP256k1 包(我不希望在不久的将来有一个包)所以我希望在这里得到指导。

0 投票
2 回答
791 浏览

c++ - 使用 MXE gcc 构建 Qt 应用程序时缺少 std::mutex

我正在尝试从针对 Windows 的 linux 下的命令行构建 Qt 应用程序。我已经使用 mxe 构建了一个针对 Windows 的工具链,但是我的构建失败了,因为各种线程相关的位。mxe 使用 winpthreads 构建,我知道 Qt 项目将使用预打包的 mingw 编译器从创建者内部构建在 windows 本身上。我正在使用我的 ARM Linux 交叉编译器成功构建,所以我只想让 windows 完成同样的工作。我正在尝试在构建服务器上或从 Jenkins 为我的所有目标构建一条线路。

我猜我在进行跨工具链构建时遗漏了一些我需要传递给 mxe 的东西,或者遗漏了我需要传递给 qmake 以使这个构建成功的东西。

0 投票
2 回答
442 浏览

qt - 使用 MXE 交叉编译 KDSoap

在 Ubuntu 15.04 上的 MXE 中为 Windows 交叉编译的 qt5:

然后克隆 KDSoap 存储库并尝试交叉编译它:

然后是链接器问题make

这些来自pcre, crypto,opensslzlib其他东西。

我试图-lpcreCMakeFiles/kdsoap.dir/linklibs.rsp链接器命令中添加一个。并手动重新运行链接(src/KDSoapClient例如):

但是pcre-related 链接错误并没有消失。

可以做些什么来进行更多调查?或者有不同的程序来交叉编译基于 Qt 的代码?

0 投票
0 回答
156 浏览

mxe - MXE 在 linux 上为 linux 编译

所以我看到了这个项目http://mxe.cc/并尝试了它,似乎用它为 Windows 编译东西很容易。我试图破解它来为 linux 编译二进制文件,因为,如果它很容易为其他系统编译,那么它怎么很难为主机编译呢?90% 的东西似乎是开箱即用的,但是有一些错误,因此我无法构建。我想问一下,我应该如何正确配置 mxe 为 linux 主机构建?我知道这不受支持,但我认为这不应该那么难,因为无论如何我们都是从源代码构建的。而且下载的源代码也几乎没有修改(在 Windows 版本中)。

对于可能会问我为什么不想使用共享的东西的人,我想基本上有两个选择:

  1. 指定依赖项的用户的 dpkg 包(linux方式)
  2. 单个独立静态可执行文件

有什么建议么?或者也许还有另一个关于如何从头开始构建东西的 Linux 指南(没有像 mxe 那样的大量手动工作)?

0 投票
1 回答
519 浏览

macos - mac上的mxe交叉编译器QSerialPort

我在 mac os x 上使用 qt 5.5.1 并想为 windows 开发一个应用程序。到目前为止,一切都很好。我已经安装了交叉编译器M 交叉环境 (MXE)来生成 .exe 文件。编译器似乎可以工作,但我遇到的问题是 mxe 不知道 Qt 库串行端口。由于使用了 qt5.5,我不再需要手动构建 Qt Serial Port。Qt Serial Port 正式成为 Qt AFAIK 的一部分。如果我使用以下命令运行 Qt Makefile 生成器工具:

我收到以下错误消息:

在我的应用程序 *.pro 文件中,我添加了以下行:

任何人都可以在这一点上帮助我。我想我必须将串行端口库与 mxe 链接起来。但不知道如何解决这个问题。

谢谢!

0 投票
0 回答
220 浏览

c++ - 使用 MXE 交叉编译我的 Linux QT 项目失败。找不到图书馆

我在 Linux 上有一个使用 taglib 的 QT5 项目。它在 QtCreator 中编译良好,并在 Linux 下完美运行。

现在我想使用 MXE 交叉编译代码。我已经根据文档下载并“安装”了 MXE。我做了一个“make”来交叉编译所有库。我还按照文档中的描述设置了我的 PATH。

qmake 运行没有错误,但是当我“制作”项目时,编译器会抱怨:

fileref.h 是 taglib 使用的库头文件之一,此外,它是该库的 3 个包含的第一个。

在我的 .pro 文件中,这两行是由 QtCreator 添加的,因为我包含了用于 linux 的库:

我错过的图书馆有什么配置要做吗?欢迎任何帮助!提前致谢!

解决了这个问题: 我应用了这里发布的解决方案:Compiling QT project for win32 target on Linux PC with larmadillo

并添加了库的路径,这适用于 MXR 编译器运行,但我必须在本机编译器运行之前将其删除。

0 投票
1 回答
199 浏览

c++ - 理论或方向、c++、qt 和 MXE 交叉编译

我正在寻求一点帮助,这不是某人要解决的问题,但更多的理论或正确的前进道路会有所帮助。我对 C、C++ 很陌生。但是我向朋友提供了帮助,我自己也变得有点卡住了。

我正在为 Windows 交叉编译 MXE 中的一个项目。该项目使用 QT 4(QTCore、QTGui、QTNetwork 和 QTWebKit)、Boost、OpenSSL、BerkelyDB。

现在,在他添加 QTWebKit 之前,我能够使用i686-w64-mingw32.static编译项目,我理解由于库与 QTScript 冲突,MXE 无法使用静态编译 QTWebKit,这需要使用i686-w64-mingw32 编译它。共享

现在,该 exe 在i686-w64-mingw32.shared中编译,但需要大约 35 个不同的 DLL 库才能运行,包括 libgcc* dll。即使 .pro 或 makefile 具有-static-libgcc & -static-libstdc++

所以我的问题是。

有没有办法编译这个项目,以便大多数库是静态的,可以是 libgcc* 和 boost 之类的库,只有少数像 QTWebKit 是动态的或(共享的?)?

感谢您在这种情况下提供的任何帮助。

0 投票
0 回答
189 浏览

linux - 使用支持 Qt3D 的 mxe 构建我的 Qt5.5 应用程序

基本上,我正在按照这些说明如何在Ubuntu for Microsoft WindowsQt5.5上成功交叉编译我的项目。

我的项目依赖于Qt3D,我希望得到它的支持mxe,但是,当我mxe使用 Qt5 准备的项目调用我的项目的构建时,它会立即报告:

此外,如果我为 mxe 构建“qt3d”目标,它会在报告以下内容之前等待几秒钟:

换句话说,一个大懒惰似乎什么都没有发生。

因此,就适合像我这样的完整 mxe 初学者而言,为 mxe 调用 make 以使其构建具有 Qt3D 支持的 qt5 以便我可以使用生成的 mxe qmake 交叉编译我的项目的正确方法是什么?

谢谢!

0 投票
0 回答
1177 浏览

c++ - windows 的交叉编译:cmake & mxe:在依赖项中丢失

我正在尝试使用 cmake 和 MXE 为 Windows 进行交叉编译。

在 *nix 上一切正常。但是我不知道如何让一些依赖项(Grantlee5 和 Qt5WebKitWidgets)与 MinGW 和交叉编译一起工作。这是我的 CMakeLists.txt 的(最小)示例:

如果我只使用“cmake”,它就可以正常工作。但是,如果我使用 MXE 的工具链为 Widnows (i686-w64-mingw32.static-cmake) 进行交叉编译,Grantlee5 和 Qt5WebKitWidgets 将失败并显示以下消息:

在 CMakeLists.txt:xx (find_package) 处出错:找不到与请求的版本“”兼容的包“Grantlee5”的配置文件。[原文如此]

以下配置文件被考虑但未被接受:

当然,我的 Grantlee5 二进制文件与 Windows/MinGW 不兼容。

ExternalProject_Add(Grantlee5 GIT_REPOSITORY https://github.com/steveire/grantlee.git ) 似乎交叉编译grantlee,但是它在安装目标失败(当然我不能在我的系统上安装Windows二进制文件)

add_library(Grantlee5 /usr/local/src/grantlee/) 分解了 find_library 语句。Grantlee 得到构建,但链接失败(包括grantlee/engine.h 未找到)

如何告诉 cmake 从源代码为特定目标构建 Grantlee 和 Qt5WebKitWidgets(同时使用可用的二进制文件进行动态链接)?什么是“正确”的做法?

0 投票
2 回答
538 浏览

c - Multiple "Undefined reference" errors with MXE and SDL2

I am trying to compile a OpenGL program which uses SDL for context creation and image loading. When I compile it on Linux natively, it compiles and runs without error. I have installed MXE in /opt/mxe and have checked that the SDL2 directory (which contains headers) is in /opt/mxe/usr/i686-w64-mingw32.static/include/ while the corresponding libraries (libSDL.a, etc.) are in /opt/mxe/usr/i686-w64-mingw32.static/lib/.

The included header files are <SDL2/SDL.h> and <SDL2/SDL_image.h>

I am trying to compile the said program using

i686-w64-mingw32.static-gcc 5_transformation.c -I/opt/mxe/usr/i686-w64-mingw32.static/include -L/opt/mxe/usr/i686-w64-mingw32.static/lib -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lGLEW -lopengl32 -lm -mwindows

However, it gives multiple undefined reference errors: [http://pastebin.com/JaadTNnv

]1

Many of these errors seem related to Direct3D and such, which I am not using (but SDL2 might, internally). Do I have to link against them too? Am I even doing this right? (MXE page doesn't seems to have any detailed instructions).

PS. This question, or it's variants, seem to be pretty popular across internet. However, I have already followed their instructions. My main function is defined as int main(int argc, char *argv[]), I am linking against -lmingw32, -lSDL2main and -mwindows, I have made sure that the path in GCC's arguments are correct, I tried putting i686-w64-mingw32.static-sdl-config --cflags --libs and i686-w64-mingw32.static-pkg-config SDL_image --cflags --libs in arguments instead of explicit linking (that simply gave undefined reference for SDL functions like SDL_GL_CreateContext and IMG_Load and said that Package SDL_image was not found in the pkg-config search path.).