0

我一直在尝试在我的程序中使用magic.hmagiclib来帮助识别文件类型。但是,当我尝试编译程序时,它会声明magic_openMAGIC_MIME并且MAGIC_CHECK未声明会导致错误。

我尝试了以下命令(magicTest.c作为我的程序)

gcc magicTest.c -o magicTest -lmagic

没有成功

#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include </usr/include/linux/magic.h>

int main(){
   struct magic_set *magic = magic_open(MAGIC_MIME|MAGIC_CHECK);
   magic_load(magic, NULL);
   printf("magic output: '%s'\n", magic_file(magic, "myText"));

   return 0;
}

以下是我收到的实际错误和输出

magicTest.c: In function ‘main’:
magicTest.c:7:30: warning: implicit declaration of function ‘magic_open’ [-Wimplicit-function-declaration]
    struct magic_set *magic = magic_open(MAGIC_MIME|MAGIC_CHECK);
                              ^
magicTest.c:7:41: error: ‘MAGIC_MIME’ undeclared (first use in this function)
    struct magic_set *magic = magic_open(MAGIC_MIME|MAGIC_CHECK);
                                         ^
magicTest.c:7:41: note: each undeclared identifier is reported only once for each function it appears in
magicTest.c:7:52: error: ‘MAGIC_CHECK’ undeclared (first use in this function)
    struct magic_set *magic = magic_open(MAGIC_MIME|MAGIC_CHECK);
                                                    ^
magicTest.c:8:4: warning: implicit declaration of function ‘magic_load’ [-Wimplicit-function-declaration]
    magic_load(magic, NULL);
    ^
magicTest.c:9:35: warning: implicit declaration of function ‘magic_file’ [-Wimplicit-function-declaration]
    printf("magic output: '%s'\n", magic_file(magic, "myText"));
                                   ^
magicTest.c:9:11: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
    printf("magic output: '%s'\n", magic_file(magic, "myText"));

任何帮助将不胜感激!

编辑

按照jww的建议运行命令后,如下图:

find /usr -name magic.h 2>/dev/null

我的输出是:

/usr/arm-linux-gnueabi/include/linux/magic.h
/usr/arm-linux-gnueabihf/include/linux/magic.h
/usr/include/magic.h
/usr/include/linux/magic.h
/usr/include/ImageMagick-6/magick/magic.h
/usr/src/linux-headers-4.13.0-39/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-37/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-38/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-32/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-41/include/uapi/linux/magic.h
/usr/src/linux-headers-4.13.0-36/include/uapi/linux/magic.h

再次感谢!

4

0 回答 0