Tag: gcc

windows上的libcurl静态库

如何将这个库libcurl静态链接到exe? 我试过了 –disable-share –enable-static没有帮助。 我正在使用MingW32 有没有一种简单的方法来静态链接这个库,所以我可以没有更多.dlls与我的应用程序?

当其中一个失败时,停止多个文件GCC编译

我创建了以下bash构建脚本文件: BLD_INCLUDE=”-I..source/module1 -I..source/module2″ SRC_MOD1=”$(find ../source/module1 -name ‘*.c’)” SRC_MOD2=”$(find ../source/module2 -name ‘*.c’)” BLD_SOURCES=”../source/program.c $SRC_MOD1 $SRC_MOD2″ BLD_LINKER=”” #if there is any need of linker – irrelevant here gcc $BLD_FLAGS $BLD_INCLUDE -o outputobject $BLD_SOURCES $BLD_LINKER 我正在构建这样的因为我需要编译很多文件。 问题是,当使用gcc执行多个文件时,如上所述,如果其中一个文件的编译失败,它会提示错误以及“编译终止”,然后继续执行其他文件。 我想要的行为是,即使其中一个文件无法编译,整个编译也会停止。 也就是说,在我的情况下:假设缺少一个头文件。 现在gcc尝试编译第一个.c ,发现缺少头文件,提示 致命错误:文件丢失错误编译终止。 然后继续执行其他.c文件。 由于头文件总共缺失,它不断给我这个错误并继续执行。 我希望这个构建脚本在编译失败时立即终止,即使是其中一个文件也是如此。 编辑: 与多个文件编译错误时不是Stop GCC的重复,它起源于这个问题本身(阅读评论)。 这个问题甚至可以追溯到这一点。

循环依赖解析与野牛生成的文件

我在野牛的yacc文件中有这个代码块。 这是Flex&Bison书的flex / bison代码中的代码。 yacc代码可以从https://github.com/GrooveStomp/Flex-Bison/blob/master/samples/purecalc.y下载 %{ # include “purecalc.lex.h” # include “purecalc.h” #define YYLEX_PARAM pp->scaninfo %} 问题是我有一个编译错误( 循环依赖解析与bison生成的文件 ); 它们是循环相关的,因为purecalc.lex.h依赖于purecalc.h文件中的pcdata,而purecalc.h依赖于purecalc.lex.h中的yyscan_t。 yyscan_t在purecalc.lex.h中是defiend: typedef void* yyscan_t; pcdata定义如下: /* per-parse data */ struct pcdata { yyscan_t scaninfo; /* scanner context */ struct symbol *symtab; /* symbols for this parse */ struct ast *ast; /* an AST for */ […]

如何清除“警告:声明不声明任何内容”

当我使用GCC编译程序时,它将显示“警告:声明不声明任何内容[-fpermissive]” 。 有问题的代码如下: typedef int BOOL; 我该如何清除警告?

C ++包括汇编函数

我试图找到一些方法来解决一些没有太多C ++ 11支持的平台,但是使用x86程序集。 我知道集会,但我没有做太多。 我想做的是编写一个C ++函数,带有头文件和源文件,编译头文件,并使用GCC 4.8来源代码到x86程序集(无依赖关系,甚至不是STL),然后使用汇编文件使用GCC 4.4编译的程序(可能首先使用4.4 [?]将它们编译为静态库)。 是否有可能做到这一点? 我一直在玩它几个小时,但没有取得很多好成绩。 有人对此有任何煽动吗?

DEV-C ++中的编译器错误

我编译了以下代码,在我的C代码中使用#include 声明,我在DEV-C ++中遇到以下编译器错误。 我想编译器中应该有一些选项来解决这个问题。 有人可以帮助解决这个问题。 以下是我的示例代码,它取自MSDN网站: #include #include void ErrorExit(LPTSTR lpszFunction) { // Retrieve the system error message for the last-error code LPVOID lpMsgBuf; LPVOID lpDisplayBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); // Display the error message and exit the process lpDisplayBuf […]

C中的多参数函数,其中从不使用第二个参数

我有两个function: int hash64(int key0, int key1); int hash32(int key0, int UNUSED_ARG); 以及带有函数指针的结构 int (*hash)(int key0, int key1); 所以, hash32只使用key0 ,但是我需要以这种方式声明它以便将它分配给函数指针。 但是当我这样做时,GCC显然抱怨很多。 如果它是单参数函数,我们就可以做到 int hash1(int key); int hash2(void); 或者其他什么,但显然int hash32(int key0, void)根据GCC是无效的语法。 那么,声明hash32的正确方法是什么?

汇编循环通过字符串来计算字符

我尝试制作一个汇编代码,计算字符串中有多少个字符,但是我得到一个错误。 代码,我使用gcc和intel_syntax #include int main(){ char *s = “aqr b qabxx xryc pqr”; int x; asm volatile ( “.intel_syntax noprefix;” “mov eax, %1;” “xor ebx,ebx;” “loop:” “mov al,[eax];” “or al, al;” “jz print;” “inc ebx;” “jmp loop” “print:” “mov %0, ebx;” “.att_syntax prefix;” : “=r” (x) : “r” (s) : “eax”, “ebx” ); printf(“Length of […]

在C中读取unicode文件时出错

我想使用以下代码在C(Cygwin / GCC)中读取unicode文件: #include #include #include void split_parse(char* text){ char** res = g_strsplit(text, “=”, 2); printf(“Key = %s : “, res[0]); printf(“Value = %s”, res[1]); printf(“\n”); } int main(int argc, char **argv) { setenv (“CYGWIN”, “nodosfilewarning”, 1); GIOChannel *channel; GError *err = NULL; int reading = 0; const gchar* enc; guchar magic[2] = { 0 […]

来自GCC编译器的程序段错误:连接两个字符串

以下代码从GCC编译器引发segment error : char *str1 = “India”; char *str2 = “BIX”; char *str3; str3 = strcat(str1, str2); printf(“%s %s\n”, str3, str1); 问题是str3=strcat(str1, str2) 。 所以我的问题是:对于GCC编译器,它禁止指向同一个东西的两个指针?