我想在iPhone项目中使用C库。 iPhone开发我非常环保。 我的图书馆 我一直在努力争取将这个库构建到一个静态库中,我可以将它用于模拟器(i386)和ARM7。 使用库的include配置和makefile,我可以毫无问题地构建库。 但是,如果我编辑makefile来尝试构建同一个库但是以armv7架构为目标,我会遇到很多错误。 错误似乎是报告无法找到某些头文件。 那么编译器是否会尝试根据目标体系结构在不同的位置查找头文件? 这是我编辑的make文件,试图为armv7构建: # $Id: Makefile.in 62 2005-03-09 21:11:53Z gyunaev $ CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1 CFLAGS = -Wall -DIN_BUILDING_LIBIRC -O3 -DENABLE_THREADS -D_REENTRANT AR=ar cr RANLIB=ranlib INCLUDES=-I../include OBJS = libircclient.o all: lib lib: libircclient.a install: lib -mkdir /usr/local/include -mkdir /usr/local/lib cp ../include/libircclient.h /usr/local/include/libircclient.h cp ../include/libirc_errors.h /usr/local/include/libirc_errors.h cp ../include/libirc_events.h /usr/local/include/libirc_events.h cp libircclient.a […]
我有一个用MinGW,Eclipse C项目编译的C库。 库包含许多模块,每个模块都可以进行测试。 什么是最好的方法(使用MACROS或其他东西)如何为这个库编写测试,在Eclipse / CDT IDE中编译运行它? 编辑:我看到有些人使用 #ifdef TEST int main(void) { …TEST LOGIC… } #endif 但不知道如何将其插入Eclipse。
#include “ffmpeg/libavcodec/avcodec.h” #include “ffmpeg/libavformat/avformat.h” #include “ffmpeg/libswscale/swscale.h” #include “ffmpeg/libswscale/rgb2rgb.h” #include “ffmpeg/libswscale/swscale_internal.h” #include #ifdef __MINGW32__ #undef main /* Prevents SDL from overriding main() */ #endif #include “SDL.framework/Headers/SDL.h” #include “SDL.framework/Headers/SDL_thread.h” 是用这个命令编译的: gcc -o t1 tutorial01.c -lswscale -lavutil -lavformat -lavcodec -lz -lavutil -lm -framework SDL 但我得到这个错误: Undefined symbols: “_main”, referenced from: start in crt1.10.6.o (maybe you meant: _SDL_main) ld: […]
我有这个function: char code[] = “\xeb\x19\x31\xc0\x31\xdb\x31\xd2\x31\xc9\xb0\x04\xb3\x01\x59\xb2\x05\xcd\x80\x31\xc0\xb0\x01\x31\xdb\xcd\x80\xe8\xe2\xff\xff\xff\x68\x65\x6c\x6c\x6f”; int main(int argc, char **argv) { int (*func)(); func = (int (*)()) code; (int)(*func)(); } (此代码来自: shellcode教程 ) 所以我编译并执行它,但我只得到这个消息:Speicherzugriffsfehler(Speicherabzug geschrieben)。 为什么我没有得到回报,只有这个错误信息? ps:我的系统是ubuntu x86 pc。 shellcode应该可以使用它。 我使用gcc和gcc-4.5编译它,两个相同的错误…
现代CPU可以在两个原生大小的字之间执行扩展乘法,并将低和高结果存储在单独的寄存器中。 类似地,当执行除法时,它们将商和余数存储在两个不同的寄存器中,而不是丢弃不需要的部分。 是否存在某种可移植的gcc内在函数,它将采用以下签名: void extmul(size_t a, size_t b, size_t *lo, size_t *hi); 或类似的东西,以及分裂: void extdiv(size_t a, size_t b, size_t *q, size_t *r); 我知道我可以通过在代码中抛出#ifdef来使用内联汇编和shoehorn可移植性来实现它,或者我可以使用部分和来模拟乘法部分(这将显着更慢)但我想避免这样做以便于阅读。 当然有一些内置function来做到这一点?
我一直在努力使我的代码能够被GCC自动矢量化,但是,当我包含-fopenmp标志时,它似乎停止了所有自动矢量化的尝试。 我正在使用ftree-vectorize -ftree-vectorizer-verbose=5进行矢量化和监控。 如果我不包含该标志,它会开始向我提供有关每个循环的大量信息,如果它是矢量化的,为什么不。 当我尝试使用omp_get_wtime()函数时,编译器停止,因为它无法链接。 一旦包含了标志,它就会简单地列出每个函数并告诉我它中的向量化0循环。 我已经阅读了其他一些地方已经提到这个问题,但他们并没有真正找到任何解决方案: http://software.intel.com/en-us/forums/topic/295858 http:// gcc。 gnu.org/bugzilla/show_bug.cgi?id=46032 。 OpenMP有自己的处理矢量化的方法吗? 我需要明确告诉它吗?
我很难搞清楚如何解决以下问题。 我在一个内存非常少的嵌入式系统上,希望尽量减少内存使用量。 指针总是让我感到困惑,并且总是这样。 我有一大堆寄存器地址定义: #define GPIO_PORTA_BASE (*((volatile unsigned long *)0x40004000)) #define GPIO_PORTB_BASE (*((volatile unsigned long *)0x40005000)) //etc.. 这些寄存器可直接访问。 例如: GPIO_PORT_BASE &= 0x01; 我需要的是一个包含上述寄存器的数组,以便我可以轻松地将它们映射到索引。 例如: not_sure_what_to_declare_the array_as port_base_array[] { GPIO_PORTA_BASE, GPIO_PORTB_BASE, //etc } 我最终需要做的是这样的事情: volatile unsigned long *reg; *reg_a = port_base_array[0]; reg_a &=0x1; 我正在使用gcc来编译arm cortex m3的代码。 任何见解将不胜感激。
我现在在大学学习C,老师告诉我使用代码块作为IDE,但在我看来,代码块有点难看,这就是为什么我选择Sublime Text 2,那里最好的IDE /文本编辑器。 目前我通过sublime编写我的代码,保存它然后通过mac os终端(gcc)编译它,然后在终端上运行它… 我想知道的是,如果它是可能的,是如何从sublime,使用它的控制台或插件(或其他东西),换句话说我想知道是否可以编译我的.c并运行只需点击几下即可获得…(现在我只是构建控制台应用程序) 我在这里读到了一些关于这个主题的post,但没有一个能帮助我解决这个问题。
scanf的“正则表达式”是否支持标准? 我无法在任何地方找到答案。 此代码适用于gcc,但不适用于Visual Studio: scanf(“%[^\n]”,a); 它是Visual Studio错误还是gcc扩展? 编辑:看起来像VS工作,但必须考虑Linux和Windows之间的行结束的差异。(\ r \ n)
本网站上的几个问题揭示了混合有符号和无符号类型时的缺陷,大多数编译器似乎都很好地生成了这种类型的警告。 但是,在为无符号类型指定有符号常量时,GCC似乎并不在意! 考虑以下程序: /* foo.c */ #include int main(void) { unsigned int x=20, y=-30; if (x > y) { printf(“%d > %d\n”, x, y); } else { printf(“%d <= %d\n", x, y); } return 0; } 使用GCC 4.2.1进行编译如下所示在控制台上没有输出: gcc -Werror -Wall -Wextra -pedantic foo.c -o foo 生成的可执行文件生成以下输出: $ ./foo 20 <= -30 当将有符号值-30分配给无符号整数变量y时,是否有某些原因导致GCC不生成任何警告或错误消息?