c++ - 在具有定义目标的 linux 上编译

标签 c++ linux compilation makefile

我想用 Makefile 编译一个项目。

我已经在我的 .h 中为 linux 定义了目标

#define LINUX_TARGET (COMPILER_GCC_4_4_1|FAMILY_LINUX|TYPE_X86)
...
#ifdef _LINUX_TARGET_
     #define __linux__
     #define TARGET LINUX_TARGET
...
#ifdef __linux__
#define __LINUX__
#endif

所以在我的 Makefile 中我说,我将使用这个目标:

...
CFLAGS += -D_LINUX_TARGET_
...

但是当我编译时出现这个错误:

 ../../../../../../../Generic/Common/Include/target_definition.h:145:0: warning: "__linux__" redefined [enabled by default]
 #define __linux__
^
../../../RefFT/Float/src/LIMITOR_main_32f.c:1:0: note: this is the location of the previous definition
/*---------------------------------------------------------------------------
^

我不明白为什么,因为这适用于 macos 或 windows 目标...

编辑

Joachim Pileborg 回答后,我做了什么:

#define LINUX_TARGET (COMPILER_GCC_4_4_1|FAMILY_LINUX|TYPE_X86)
...
#ifdef _LINUX_TARGET_
    #ifndef __linux__
         #define __linux__
    #endif
    #define TARGET LINUX_TARGET
...
#ifdef __linux__
#define __LINUX__
#endif

最佳答案

因为 __linux__ 在 Linux 上构建时是预定义的

关于c++ - 在具有定义目标的 linux 上编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30374622/

相关文章:

c++ - 可执行文件中定义的函数名称(使用 dladdr)

java - 如何在函数中使用模板来传递两种不同类型的参数?

linux - RTNETLINK 回答 :No such file or directory error

linux - Docker 按镜像名称和年龄过滤容器

linux - 将毫秒添加到时间戳(bash,unix)

c++ - 基于windows版本的c++条件编译

c++ - 编译器如何存储自动变量

shell - 为什么要使用 make 而不是 shell 脚本?

c++ - 为什么这个程序没有打印返回迭代器的正确第二个元素?

c++ - 在 C++ 中制作 3d 文本编辑器