错误
目前正在使用它编译我的C++程序:
x86_64-w64-mingw32-g++ -std=c++11 -c main.cpp -o main.o -I../include
x86_64-w64-mingw32-g++ main.o -o mainWin.exe -L/usr/lib/x86_64-linux-gnu/ -L/usr/local/lib -lopengl32 -lglfw32 -lGLEW -lX11 -lXxf86vm -lXrandr -lpthread -lXi -DGLEW_STATIC我正在使用明图将我的C++程序从Linux (Ubuntu)编译成一个Windows可执行文件。我对通过命令行编译相对来说还是比较新的,但是我想把我的工作环境完全换成Linux。
当我试图编译程序时,我会得到以下错误:
*** Error in `/usr/bin/x86_64-w64-mingw32-ld`: free(): invalid pointer: [removed]***
ld terminated with signal 6 [Aborted], core dumped我相信这是因为我的GLEW。每当我make它的时候,它就想使用mingw32msvc版本的mingw。我想我需要它来使用x86_64-w64-mingw32-gcc。我不知道如何做到这一点(如果可能的话)。
额外的
还值得注意的是,我只在GLEW_STATIC的顶部定义了这个错误。如果没有它,我会得到对GLEW的未定义的引用。
发布于 2016-10-18 15:03:18
当您应该使用-lGLEW时,您似乎使用了-lglew32s/lglew32标志!确保#define GLEW STATIC,如果你是静态的linking...and,从他们的网站获得适当的二进制文件。
如果加载程序(或任何程序)崩溃,则检查是否使用最新版本。如果没有,请获得最新版本,然后再试一次。如果这不能解决这个问题,你能找到一个旧版本并使用它吗?如果您不能很容易地找到一个有效的版本,您需要向MinGW的相关团队或GNU的bin-utils团队报告该错误。32位编译是一种选择吗?如果是的话,那就试试。你陷在洞里了,可能得挖点洞才能把自己弄出来。
这个问题似乎发生在2016年,尽管问题发生在2014年。这个问题还没有得到解决,这有点令人惊讶--假设2016年出现的有缺陷的自由与2014年发生的问题是一样的。如果现在使用的装载机可以追溯到2013到2015年初,那么可能会有一个更新,你应该对它进行调查。如果现在使用的加载程序从2015年年中开始使用,则更有可能(或者,如果太过咄咄逼人,那么至少有可能)是另一个类似的bug。
建议“如果有可用的话尝试升级;如果不起作用,看看是否可以找到工作降级”仍然有效。尝试创建一个MCVE (Minimal, Complete, and Verifiable Example)并向维护团队报告这个错误是值得的--就像nodakai在2014年所做的那样。您使用的代码越小,所需的库就越少,维护团队就越容易发现问题并修复它。如果它是在Linux上运行的用于MinGW的交叉编译器,那么您仍然需要最小化代码并报告问题。
请注意,如果您能够找到“已知的工作”版本,那么维护人员可能会对此感兴趣。它定位了他们需要看的地方。
我应该注意,即使使用中的库是错误的库,加载程序仍然不应该与free错误崩溃。它可以报告一个问题并停止在控制之下。它不应该坠毁。它可能仍然值得报告,它确实崩溃了。
在许多方面,这只是关于在软件中遇到bug时应该做什么的一般性建议。
发布于 2016-10-18 12:25:17
当您应该使用-lGLEW时,您(和我)正在使用-lglew32s/lglew32标志!如果您是静态链接,请确保#define GLEW STATIC ..。从他们的网站上获取适当的二进制文件。-。
https://stackoverflow.com/questions/25275414
复制相似问题