在已定义目标的linux上编译

Compilation on linux with defined target

本文关键字:linux 编译 目标 定义      更新时间:2023-10-16

我想用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上构建时是预定义的