简体   繁体   English

C-编译错误

[英]C - compilation error

if I build my program, it gives me many errors and warning. 如果我构建程序,它会给我很多错误和警告。 Everything is from compiled highest source file - main.o. 一切都来自已编译的最高源文件-main.o。

...
./main.o:16:819: warning: null character(s) ignored [enabled by default]
./main.o:16:824: warning: null character(s) ignored [enabled by default]
./main.o:16:829: warning: null character(s) ignored [enabled by default]
./main.o:16:844: warning: null character(s) ignored [enabled by default]
./main.o:16:854: warning: null character(s) ignored [enabled by default]
./main.o:16:864: warning: null character(s) ignored [enabled by default]
./main.o:16:886: error: too many decimal points in number
./main.o:16:892: error: invalid suffix "ubuntu5" on integer constant
./main.o:16:902: error: too many decimal points in number
./main.o:16:907: warning: null character(s) ignored [enabled by default]
./main.o:16:2: error: stray ‘\24’ in program
./main.o:16:914: warning: null character(s) ignored [enabled by default]
./main.o:16:2: error: stray ‘\1’ in program
./main.o:16:924: warning: null character(s) ignored [enabled by default]
./main.o:16:2: error: stray ‘\1’ in program
./main.o:16:2: error: stray ‘\20’ in program
./main.o:16:2: error: stray ‘\1’ in program
./main.o:16:2: error: stray ‘\33’ in program
./main.o:16:2: error: stray ‘\7’ in program
./main.o:16:2: error: stray ‘\10’ in program
./main.o:16:2: error: stray ‘\220’ in program
./main.o:16:2: error: stray ‘\1’ in program
./main.o:16:935: warning: null character(s) ignored [enabled by default]
./main.o:16:2: error: stray ‘\34’ in program
./main.o:16:938: warning: null character(s) ignored [enabled by default]
./main.o:16:2: error: stray ‘\34’ in program
./main.o:16:942: warning: null character(s) ignored [enabled by default]
./main.o:16:950: warning: null character(s) ignored [enabled by default]
./main.o:16:2: error: stray ‘\16’ in program
./main.o:16:2: error: stray ‘\20’ in program
./main.o:16:2: error: stray ‘\206’ in program
./main.o:16:2: error: stray ‘\2’ in program
In file included from <command-line>:0:0:
./main.o:17:1: error: stray ‘\6’ in program
./main.o:17:1: error: stray ‘\2’ in program

....

Where can a problem be? 问题在哪里? These errors are caused be "-include" command and source file /usr/include/glib-2.0/glib/gregex.h to makefile. 这些错误是由于“ -include”命令和/file/usr/include/glib-2.0/glib/gregex.h导致的。 But if I remove this command it will give me errors with "undefined reference to ..." ... declarations from glib. 但是,如果我删除此命令,它将给我错误,并带有来自glib的“对...的未定义引用”声明。 Problem will be with using glib. 问题将在于使用glib。 Before I tried (without an effect): 在我尝试之前(没有效果):

INCLUDES =  -I/usr/include/glib-2.0 \
        -I/usr/include/glib-2.0/glib
LIBS :=     -lglib-2.0

Does anyone have the correct makefile commands with glib? 有没有人使用glib拥有正确的makefile命令? Thanks 谢谢

EDIT: I would like to create a program, which using streamripper for recording internet audio streams. 编辑:我想创建一个程序,使用streamripper录制互联网音频流。

CC = gcc    
CFLAGS = -g -Wall $(shell pkg-config --cflags glib-2.0)  -D__UNIX__
LFLAGS =    -L/usr/include/x86_64-linux-gnu \
            -L/usr/local/lib/ \
            -L/usr/include/x86_64-linux-gnu 
SRCS =  main.c \
        streamripper.c #\
        /usr/include/glib-2.0/glib/gregex.h
OBJS = $(SRCS:.c=.o)
MAIN = radio
INCLUDES =  -I/home/honza/workspace/Radio_processing/streamripper/libmad-0.15.1b \
            -I/usr/include \
            -I/usr/include/x86_64-linux-gnu \
            -I/usr/include/x86_64-linux-gnu/4.6/include \
            -I/usr/include/x86_64-linux-gnu/4.6/include-fixed \
            -I/usr/local/include \
            -I/usr/lib/x86_64-linux-gnu/glib-2.0/include \
            -I/usr/lib/x86_64-linux-gnu/glib-2.0 \
            -I/usr/include/glib-2.0 \
            -I/usr/include/glib-2.0/glib
LIBS :=      -lm libmad.a libstreamripper.a -glib -lglib-2.0 \
             $(shell pkg-config --libs glib-2.0)
             #-lavcodec -lavutil -lavformat   -lpthread

all: $(MAIN)

    @echo 'My makefile finished'

$(MAIN): $(OBJS)
    $(CC) $(CFLAGS) $(INCLUDES) -o $(MAIN) $(OBJS) $(LFLAGS) $(LIBS) 

.c.o:
    $(CC) $(CFLAGS) $(INCLUDES) -c $<  -o $@

clean:
    $(RM) *.o *~ $(MAIN)

depend: $(SRCS)
    makedepend $(INCLUDES) $^

Everything is from compiled highest source file - main.o 一切都来自已编译的最高源文件-main.o

strange thing to compile an object-file again, or to name a source-file like an object-file. 再次编译目标文件或将源文件命名为目标文件,这很奇怪。

.o normally is what comes from the compilation step with a .c file. 通常,.o来自带有.c文件的编译步骤。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM