我一直在尝试在我的程序中使用magic.h
和magiclib
来帮助识别文件类型。但是,当我尝试编译程序时,它会声明magic_open
,MAGIC_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
再次感谢!