草庐IT

MinGW-gdb

全部标签

c++ - libtool:i686-pc-mingw32 共享中不允许使用 undefined symbol

我正在使用autotools作为我的图书馆的构建系统。最近图书馆被移植到Windows。虽然我遇到了一个奇怪的错误,但库编译和链接成功。配置和制作后只有静态库。除了来自libtool的警告外,一切看起来都正常:libtool:undefinedsymbolsnotallowedini686-pc-mingw32shared我已经通过这段代码导出了Windows机器的所有符号:#ifdef_WIN32#ifdefDLL_EXPORT#defineLIBRARY_API__declspec(dllexport)#else#defineLIBRARY_API__declspec(dllimp

c++ - 为 MinGW boost 二进制文件

是否有用于MinGW的预编译Boost二进制文件?我试过自己编译它们,但遇到了太多困难,此时我很确定我已经破坏了对Windows至关重要的东西,我将在两个月后弄清楚.那么有人知道我在哪里可以获得预编译的boost库吗?如果没有,我想我会等到std::thread在MinGW上可用。 最佳答案 FedoraLinux16有它们,但使用GCC4.6编译(C++库在主要编译器版本之间不兼容,Fedora13有针对GCC4.4的Boost,Fedora15有针对GCC4.5):DLLs:GCC4.6GCC4.5GCC4.4静态:GCC4.6

c++ - MinGW 作为可靠的 64 位 GCC 编译器

我担心64位MinGW编译器作为VisualC++编译器的替代品的可靠性。例如,假设C++代码在使用GCC4.6.2的Linux下完美构建和运行,相应的MinGW是否会在64位Windows下生成类似可靠的可执行文件/库?就可靠性而言,Cygwin是否是更好的选择?既不是VisualC++编译器? 最佳答案 首先是一些误解:MinGW(.org)不提供其运行时的64位版本。除了他们的32位CRT之外,MinGW-w64也是如此。他们还在致力于ARM支持。并支持各种额外的API(Win32和其他)。CygwinMinGW-w64:Cy

c++ - 使用 gdb 调试基于参数的 C 程序

我有一个C++程序,我通过传递字符串来运行它。g++-oamain.cpp-lpthread并用./a"Goodnice"执行它但是我如何使用gdb调试它呢?main.cpp从包含在其中的其他文件调用函数。gdb./a"Goodnice"将“--”作为文件并表示没有这样的文件!我要逐行调试! 最佳答案 使用gdb的--args选项:gdb--args./a"Goodnice"还要将-g选项添加到您的编译器调用中,否则gdb将无法将您的可执行文件与您的源代码连接起来:g++-g-oamain.cpp-lpthread

c++ - GDB bt 错误 : "Not enough registers or memory available to unwind further"

来自核心文件的回溯由于以下原因削减了有用的信息:Backtracestopped:Notenoughregistersormemoryavailabletounwindfurther.为什么会出现此消息,我可以做些什么吗? 最佳答案 尝试使用-O0标记构建例如。CFLAGS="-g-O0" 关于c++-GDBbt错误:"Notenoughregistersormemoryavailabletounwindfurther",我们在StackOverflow上找到一个类似的问题:

c++ - GDB 报告 C++ 对象的构造函数中的参数地址错误

当GDB将字符串作为参数传递给构造函数时,我遇到了一个奇怪的行为。代码工作正常,但是当我在调试器中单步执行时,GDB似乎认为我的参数位于不同的地址。有谁知道这里发生了什么?这是我可以创建的最简单的程序来演示该问题:--(jwcacces@neptune)--------------------------------------------(/home/jwcacces)----$nlgdb_weird.cpp1#include2#include34classC5{6public:7C(std::stringstr)8{9std::string*str_ptr=&str;10std::

c++ - VC++允许/##/作为宏的值——如何在eclipse/mingw-gcc中处理它?

我正在尝试在eclipse/mingw-gcc中编译一个真正的win32应用程序,直到现在都没有成功(参见https://stackoverflow.com/questions/9162976/how-to-compile-a-win32-application-in-eclipse-using-the-mingw-gcc-toolchain)无论如何,在解决另一个错误时,文件c:\ProgramFiles(x86)\MicrosoftSDKs\Windows\v7.0A\Include\WTypes.h中的以下行引起了我的注意好奇心:#define_VARIANT_BOOL/##/它

c++ - 如何避免 GDB 中符号的命名空间前缀?

我正在使用C++库。该库使用多个命名空间。调试时,我必须在每个符号名称前加上命名空间前缀。它会导致大量额外的工作和打字。C++有usingnamespaceX的概念,可以更轻松地使用符号(大量的手动操作)。我在GDB中寻找类似的东西。例如,我想要bFoo::bar而不是bMyLibNamespace::Foo::bar。GDB似乎没有与命名空间相关的帮助,但我可能做错了什么:(gdb)helpnamespaceUndefinedcommand:"namespace".Try"help".(gdb)namespacehelpUndefinedcommand:"namespace".Try

c++ - 使用 gdb 在 MS VC++ 2010 Express 中编译的调试程序

是否可以使用MicrosoftVisualC++Express构建可执行文件,以便使用gdb对其进行调试?我尝试使用C7兼容的/Z7编译器选项和/debug链接器选项,但生成的.pdb文件无法被gdb识别:(gdb)symbol-fileHelloWorldVC.pdb`HelloWorldVC.pdb':can'treadsymbols:Fileformatnotrecognized. 最佳答案 GDB的调试格式与Microsoft的编译器不同。实际上,没有记录PDB格式。因此,您不能将Microsoft编译器生成的调试信息与GD

c++ - 在 MinGW 下 boost ptime 不是线程安全的

我对boost库有疑问。我将MinGW与gcc4.5.2一起使用来编译以下代码:unsignedlongGetEpochSeconds(){usingnamespaceboost::posix_time;usingnamespaceboost::gregorian;ptimenow(second_clock::universal_time());ptimeepoch(date(1970,1,1));time_durationdiff=now-epoch;returndiff.total_seconds();}问题是这段代码不是线程安全的。当我从多个线程中运行它时,我的应用程序崩溃了。现