Tag: cygwin

无法使用Cygwin和OpenSSL计算CMAC

我想使用OpenSSL计算CMAC。 我发现这个问题对我很有帮助。 但我遇到以下代码的问题: #include void dispHex(const unsigned char *buffer, unsigned int size) { int i=0; for (i=0; i<size-1; i++) { printf("%02X ", buffer[i]); } printf("%02x\n", buffer[i]); } int main() { size_t out_len; unsigned char res[16]; unsigned char mac_key[16] = { 0x00, 0x01 ,0x02 ,0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x01 ,0x02 ,0x03, 0x04, 0x05, 0x06, […]

如何在c中乘以32位整数

执行: #define HIGH32(V64) ((uint32_t)((V64 >> 32)&0xffFFffFF)) #define LOW32(V64) ((uint32_t)(V64&0xffFFffFF)) uint32_t a = 0xffFFffFF; uint32_t b = 0xffFFffFF; uint64_t res = a * b; printf(“res = %08X %08X\n”, HIGH32(res), LOW32(res)); 得到: “res = 00000000 00000001” 但我期待:fffffffe00000001。 我做错了什么? 单一作业: res = 0x0123456789ABCDEF; printf(“res = %08X %08X\n”, HIGH32(res), LOW32(res)); 给 res = 01234567 89ABCDEF 环境: $gcc –version gcc […]

在cygwin上编译hsdis(Java HotSpot反汇编程序插件)时,错误的reloc地址0x0

我正在尝试编译JVM需要反汇编JIT编译代码的hsdis-amd64.dll库。 我按照这个接受的答案。 我安装了cygwin 下载了openjdk-7u40-fcs-src-b43-26_aug_2013.zip 并下载了binutils-2.24.tar.gz 我创建了一个这样的文件夹结构: + +- hsdis // unzipped dir hotspot/src/share/tools/hsdis of openjdk zip +- binutils-2.24 // unzipped binutils-2.24.tar.gz 首先,我尝试使用以下方法编译它: $ make OS=Linux MINGW=x86_64-w64-mingw32 BINUTILS=../binutils-2.24 但它失败了 /Linux-amd64/opcodes/libopcodes.a build/Linux-amd64/libiberty/libiberty.a hsdis.c:32:20: fatal error: sysdep.h: No such file or directory #include ^ compilation terminated. 所以我应用了此接受答案中提供的补丁并再次尝试。 编译再次失败 In file included from hsdis.c:34:0: build/Linux-amd64/bfd/bfd.h:35:2: error: #error config.h must […]

未定义引用`_GetAdaptersAddresses @ 20′ – 但我包括-liphlpapi

我在cygwin下使用gcc编写一些代码,在我的代码中调用来自iphlpapi.h GetAdaptersAddresses我已经将_WIN32_WINNT设置_WIN32_WINNT高于所需的0x0501并且在链接器行上我添加了-liphlpapi但是链接器仍然失败了以下内容信息: gcc -liphlpapi build/obj/*.o -Wall -Wextra -o build/bin/asdf.exe src/asdf.cpp /tmp/ccdjLPVY.o:asdf.cpp:(.text+0x153): undefined reference to `_GetAdaptersAddresses@20′ collect2: ld returned 1 exit status 来自asdf.cpp一些片段: #if _WIN32_WINNT < 0x0501 #warning _WIN32_WINNT was set lower than 0x0501, fixing #undef _WIN32_WINNT #define _WIN32_WINNT 0x0501 #endif #include #include 我知道他们在那里蠢蠢欲动: strings /usr/i686-pc-mingw32/sys-root/mingw/lib/libiphlpapi.a | sort | uniq | grep GetAdapters __imp__GetAdaptersAddresses@20 __imp__GetAdaptersInfo@8 _GetAdaptersAddresses@20 […]

使用Cygwin的MPICH2编译问题

尝试使用Cygwin在Windows机器上编译MPICH2。 一些相关的信息 $ uname – > CYGWIN_NT-6.1 $ gcc –version – > gcc(GCC)3.4.4(cygming special,gdc 0.12,使用dmd 0.125)版权所有(C)2004 Free Software Foundation,Inc。这是免费软件; 查看复制条件的来源。 没有保修; 甚至不适用于适销性或特定用途的适用性。 MPICH2版本:1.5 配置似乎已经适当完成,但在编译期间我收到以下内容: **** Making src/misc …. make –no-print-directory build_lib_bin make –no-print-directory mpe_debug_objs make –no-print-directory /home/Daeden/issm/trunk-jpl/externalpackages/mpich2/src/src/mpe2/lib/libmpe_nompi.a make[7]: `/home/Daeden/issm/trunk-jpl/externalpackages/mpich2/src/src/mpe2/lib/libmpe_nompi.a’ is up to date. make –no-print-directory /home/Daeden/issm/trunk-jpl/externalpackages/mpich2/src/src/mpe2/lib/libmpe.a gcc -I/home/Daeden/issm/trunk-jpl/externalpackages/mpich2/src/src/include -I/home/Daeden/issm/trunk-jpl/externalpackages/mpich2/src/ src/include -I.. -I../include -I../../.. -I../../../include -o […]

我们可以在几秒钟后强制退出C程序的执行

我们可以在几分之一秒(毫秒范围)或它使用的内存大小后强制退出C程序的执行吗? 这样,我想在无限循环中限制打印内容并限制缓冲区溢出。 我正在使用cygwin GCC4.3编译器,并希望将其作为PHP中的工具实现,它将C源作为输入并显示相应的输出。 PS – 1.我说毫秒因为我的C问题只涉及非常简单的算术/计算。 2.为了限制执行时间,php中的set_time_limit()将限制整个PHP脚本的执行时间,而不是分配给exec()的时间。

fflush(stdin)无法在cygwin中使用gcc编译,但使用visual studio 2010进行编译

我(重新)学习编程,我从C开始。我的IDE(如果我可以这么说)是Windows7上的cygwin(32Bit)和Visual-Studio 2010。 我一直在编译用gcc(cygwin)和VS2010编译器编写的代码。 我想,我这样做是因为我认为这是一种很好的学习方式。 无论如何,我刚刚了解了fflush(stdin),即刷新stdin缓冲区。 似乎是一个很好的function,因为使用scanf似乎很痛苦。 所以我根据我的教科书中的一个例子编写了下面的代码。 它在cygwin和VS2010中都使用gcc进行编译。 当我运行VS编译的程序时它工作正常(s.below),当我在cygwin中运行gcc编译的程序时,fflush(stdin)不会刷新stdin缓冲区(s.below)。 我已经读过一些关于fflush(stdin)的线程,在某些情况下有一个未定义的行为。 无论这意味着什么,我都是从C for Linux Programming教科书中获取的。 如果fflush(stdin)不是一个有效的方法来摆脱stdin缓冲区中的东西,还有什么其他标准方法? 非常感谢任何答案! ==在Windows下运行的程序: enter a long integer and a double 23.00 78.99 lint = 23 dt = 0.00 enter a five digits input 78493 u entered 78 and 493 ==程序在Cygwin中运行: enter a long integer and a double 23.00 78.99 lint = […]

使用CygWin进行C套接字编程

嗨,我正在尝试使用CygWin在C中编写一个servlets器/客户端程序,问题是,Cygwin中的gcc编译器似乎不包含与套接字编程相关的标准头文件。 在尝试编译我的服务器程序时,我得到: netinet/in.h: No such file or directory sys/socket.h: No such file or directory netdb.h: No such file or directory 这三个标题是否位于CygWin-enviorment的其他位置?

cygwin上的内存泄漏工具

是否有任何替代方法可用于检查Cygwin上的内存泄漏,因为它不支持Valgrind?

在Windows中使用cygwin编译的C程序,在Linux下进行分段故障。 cygwin GCC’糟糕’吗?

对于我的Programming 102类,我们被要求提供在Linux下编译和运行的C代码。 我的硬盘驱动器上没有足够的空间来安装Linux和Windows,因此我使用cygwin来编译我的程序。 我必须提供的最新程序编译并在cygwin下正常运行。 它在Linux下编译很好,但执行中途会产生分段错误。 我向给我们上课的研究生解释了这一点,他说cygwin的GCC版本允许编写和执行更粗糙的代码。 我通过谷歌找到的少数参考文献尚无定论。 我发现一个线程说Linux下的seg故障原因是内存泄漏。 为什么这不会影响cygwin版本? 我会使用大学的计算机,但我不能在他们身上使用Subversion,这会严重阻碍我的努力。 (我是编码的新手,通常需要能够恢复到X修订版)。 cygwin的GCC版本是否真的对它编译的代码更“松懈”? 如果是这样,编码时是否有任何明显的问题需要注意? 是否有任何替代方法可以编写将在Linux下运行的代码? 编辑 谢谢你的回复。 我在原帖中没有明确说明:我的代码中有一个错误,对我来说非常重要(我对编程很陌生,毕竟在C语言中真的很绿)。 我的TA暗示cygwin的GCC是一个不太可靠的编译器 – 比起在GNU / Linux下发现的代码要运行得更多。 我发现这很奇怪,因此在互联网上搜索,但实际上找不到任何对这个事实的引用。 除了责怪编译器与我的代码之外,我想知道程序在Windows下运行并在Linux下崩溃的原因是什么。 回复:在这方面说明了Windows / Linux下的不同内存管理器和堆/堆栈布局。 结论是cygwin的GCC和GNU / Linux一样’好’,它是底层操作系统/纯粹的运气,我的错误程序在一个而不是另一个下运行是非常正确的吗? 关于发布源代码,这是一个家庭作业,所以我更愿意自己找到问题,如果可能的话:) 编辑2 我接受了jalf的答案,因为它谈到了什么使程序在Windows下而不是在Linux下运行,这是我真正想知道的。 感谢所有贡献的人,他们都是非常有趣和内容丰富的回复。 当我发现问题并修复它时,我会上传一个包含这个非工作版本的所有源代码的zip文件,万一有人好奇地看到我到底做了什么:) 编辑3 对于那些有兴趣看到代码的人,我发现了问题,这确实是由于指针。 我试图从函数返回一个指针。 我试图返回的指针在函数内部被声明,因此在执行函数后被销毁。 问题代码在第22-24行注释掉。 随意嘲笑我的代码。 /** * Returns array of valid searches based on current coordinate */ void determine_searches(int […]