应该为Windows、Linux和嵌入式目标编译一个项目。应用程序在主机或嵌入式目标上运行时具有不同的行为。为了总结我的要求,下面是表格:
Target Compiler Behavior
Windows MSVC, gcc A
Host Linux gcc A
Embedded Linux cross pltf gcc B
我希望创建一个能够自动识别编译器和环境差异的Makefile (不需要手动传递参数/定义)。仅仅在C源
我正在尝试做一些原始的套接字编程。我有一些示例代码可以在32位机器上很好地编译/运行,但是当我尝试在64位机器上编译相同的代码时,我得到了/usr/includes/sys和/usr/includes/linux头文件之间的差异。我本以为在64位机器上,所有的头文件都已经针对64位的用法进行了“校正”。有人能给我一些关于如何解决这个问题的建议吗?我用的是linux(fedora 9 64位),GCC 4.3.2
谢谢!
我编译如下: gcc -Wall -o服务器server.c,得到以下错误:
In file included from /usr/include/sys/uio.h:24,
我正在尝试将一个项目从一个旧的linux平台转移到kubunutu 9.04。现在,在用gcc 4.3.3编译时,我得到了这个错误:
/usr/src/linux-headers-2.6.28-11-generic/include/linux/cpumask.h:600:37: error: "and" may not appear in macro parameter list
如果我正确理解消息,则不允许将"and“用作宏参数,因为它是”保留命令“。关于这一点,有两个问题:
这怎麽可能?我无法想象linux头文件中会有这样的错误.我以前做错什么了吗?我试过了#u
我在看一个CFLAGS的-
CFLAGS=-g -w -D LINUX -O3 -fpermissive
在Makefile中。-D标志的作用是什么?我在手册页上看到
-D name
Predefine name as a macro, with definition 1.
但我不知道该怎么解释。我的解释是把LINUX变成宏,在linux环境中只做-03 is...its -fpermissive。是那么回事吗?如果不是,那又如何呢?谢谢你的帮助
下面的程序在HPUX上返回不正确的值{-1,0,-1},而如果我在Linux上运行相同的程序,它在地区"de_DE.iso885915@euro“上可以正常工作。HPUX wcwidth、iswprint和wcswidth有什么问题吗?
int main ()
{
wchar_t str[2];
wchar_t ch = 8364; /* Euro sign */
str[0] = ch;
str[1] = '\0';
/* Locale set to de_DE.iso885915@euro before running