如何修复linux上的编译错误

如何修复linux上的编译错误,linux,compilation,makefile,Linux,Compilation,Makefile,我正在使用交叉编译器(arm-none-linux-gnueabi),我想构建一个libs3-2.0源代码,但在尝试编译时出现以下错误 libs3-2.0$ sudo make make: *** No rule to make target `libxml/parser.h', needed by `build/obj/simplexml.do'. Stop. 我能做些什么来解决这个问题?下面是(GNU)Makefile working directory: /home/usrname/p

我正在使用交叉编译器(
arm-none-linux-gnueabi
),我想构建一个
libs3-2.0源代码,但在尝试编译时出现以下错误

libs3-2.0$ sudo make
make: *** No rule to make target `libxml/parser.h', needed by `build/obj/simplexml.do'.  Stop.
我能做些什么来解决这个问题?下面是(GNU)Makefile

working directory: /home/usrname/prj/app/framework/camera/cdma_manage/<br>
///////////////////////////////////////////////////////////////////////////////////////////

LIBS3_VER_MAJOR ?= 2
LIBS3_VER_MINOR ?= 0
LIBS3_VER := $(LIBS3_VER_MAJOR).$(LIBS3_VER_MINOR)

ifdef VERBOSE
    VERBOSE = true
    VERBOSE_ECHO = @ echo
    VERBOSE_SHOW =
    QUIET_ECHO = @ echo > /dev/null
else
    VERBOSE = false
    VERBOSE_ECHO = @ echo > /dev/null
    VERBOSE_SHOW = @
    QUIET_ECHO = @ echo
endif

ifndef BUILD
    ifdef DEBUG
        BUILD := build-debug
    else
        BUILD := build
    endif
endif

ifndef DESTDIR
    DESTDIR := /usr
endif

ifndef CURL_LIBS
    CURL_LIBS := $(shell curl-config --libs)
endif

ifndef CURL_CFLAGS
    CURL_CFLAGS := $(shell curl-config --cflags)
endif

    ifndef LIBXML2_LIBS
        LIBXML2_LIBS := $(shell xml2-config --libs)
    endif

    ifndef LIBXML2_CFLAGS
        LIBXML2_CFLAGS := $(shell xml2-config --cflags)
    endif

    ifndef LIBXML2_LIBS
        LIBXML2_LIBS := -L../libxml2-2.7.2/.libs -lxml2 -lm
    endif

    ifndef LIBXML2_CFLAGS
        LIBXML2_CFLAGS := -I/home/usrname/prj/app/framework/camera/cdma_manage/libxml2-2.7.2/include
    endif

    ifndef CFLAGS
        ifdef DEBUG
            CFLAGS := -g
        else
            CFLAGS := -O3
        endif
    endif

CFLAGS += -Wall -Werror -Wshadow -Wextra -Iinc \
        $(CURL_CFLAGS) $(LIBXML2_CFLAGS) \
        -DLIBS3_VER_MAJOR=\"$(LIBS3_VER_MAJOR)\" \
        -DLIBS3_VER_MINOR=\"$(LIBS3_VER_MINOR)\" \
        -DLIBS3_VER=\"$(LIBS3_VER)\" \
        -D__STRICT_ANSI__ \
        -D_ISOC99_SOURCE \
        -D_POSIX_C_SOURCE=200112L

LDFLAGS = $(CURL_LIBS) $(LIBXML2_LIBS) -lpthread

.PHONY: all
all: exported test

.PHONY: exported
exported: libs3 s3 headers

.PHONY: install
install: exported
        $(QUIET_ECHO) $(DESTDIR)/bin/s3: Installing executable
        $(VERBOSE_SHOW) install -Dps -m u+rwx,go+rx $(BUILD)/bin/s3 \
        $(DESTDIR)/bin/s3
        $(QUIET_ECHO) \
        $(DESTDIR)/lib/libs3.so.$(LIBS3_VER): Installing shared library
        $(VERBOSE_SHOW) install -Dps -m u+rw,go+r \
        $(BUILD)/lib/libs3.so.$(LIBS3_VER_MAJOR) \
        $(DESTDIR)/lib/libs3.so.$(LIBS3_VER)
        $(QUIET_ECHO) \
        $(DESTDIR)/lib/libs3.so.$(LIBS3_VER_MAJOR): Linking shared library
        $(VERBOSE_SHOW) ln -sf libs3.so.$(LIBS3_VER) \
        $(DESTDIR)/lib/libs3.so.$(LIBS3_VER_MAJOR)
        $(QUIET_ECHO) $(DESTDIR)/lib/libs3.so: Linking shared library
        $(VERBOSE_SHOW) ln -sf libs3.so.$(LIBS3_VER_MAJOR) $(DESTDIR)/lib/libs3.so
        $(QUIET_ECHO) $(DESTDIR)/lib/libs3.a: Installing static library
        $(VERBOSE_SHOW) install -Dp -m u+rw,go+r $(BUILD)/lib/libs3.a \
        $(DESTDIR)/lib/libs3.a
        $(QUIET_ECHO) $(DESTDIR)/include/libs3.h: Installing header
        $(VERBOSE_SHOW) install -Dp -m u+rw,go+r $(BUILD)/include/libs3.h \
        $(DESTDIR)/include/libs3.h

.PHONY: uninstall
uninstall:
        $(QUIET_ECHO) Installed files: Uninstalling
        $(VERBOSE_SHOW) \
        rm -f $(DESTDIR)/bin/s3 \
        $(DESTDIR)/include/libs3.h \
        $(DESTDIR)/lib/libs3.a \
        $(DESTDIR)/lib/libs3.so \
        $(DESTDIR)/lib/libs3.so.$(LIBS3_VER_MAJOR) \
        $(DESTDIR)/lib/libs3.so.$(LIBS3_VER)

$(BUILD)/obj/%.o: src/%.c
        $(QUIET_ECHO) $@: Compiling object
        @ mkdir -p $(dir $(BUILD)/dep/$<)
        @ /opt/armv7/codesourcery/bin/arm-none-linux-gnueabi-gcc $(CFLAGS) -M -MG -MQ $@ -DCOMPILINGDEPENDENCIES \
        -o $(BUILD)/dep/$(<:%.c=%.d) -c $<
        @ mkdir -p $(dir $@)
        $(VERBOSE_SHOW) /opt/armv7/codesourcery/bin/arm-none-linux-gnueabi-gcc $(CFLAGS) -o $@ -c $<

$(BUILD)/obj/%.do: src/%.c
        $(QUIET_ECHO) $@: Compiling dynamic object
        @ mkdir -p $(dir $(BUILD)/dep/$<)
        @ /opt/armv7/codesourcery/bin/arm-none-linux-gnueabi-gcc $(CFLAGS) -M -MG -MQ $@ -DCOMPILINGDEPENDENCIES \
        -o $(BUILD)/dep/$(<:%.c=%.dd) -c $<
        @ mkdir -p $(dir $@)
        $(VERBOSE_SHOW) /opt/armv7/codesourcery/bin/arm-none-linux-gnueabi-gcc $(CFLAGS) -fpic -fPIC -o $@ -c $< 

LIBS3_SHARED = $(BUILD)/lib/libs3.so.$(LIBS3_VER_MAJOR)
LIBS3_STATIC = $(BUILD)/lib/libs3.a

.PHONY: libs3
libs3: $(LIBS3_SHARED) $(LIBS3_STATIC)

LIBS3_SOURCES := acl.c bucket.c error_parser.c general.c \
        object.c request.c request_context.c \
        response_headers_handler.c service_access_logging.c \
        service.c simplexml.c util.c

$(LIBS3_SHARED): $(LIBS3_SOURCES:%.c=$(BUILD)/obj/%.do)
        $(QUIET_ECHO) $@: Building shared library
        @ mkdir -p $(dir $@)
        $(VERBOSE_SHOW) /opt/armv7/codesourcery/bin/arm-none-linux-gnueabi-gcc -shared -Wl,-soname,libs3.so.$(LIBS3_VER_MAJOR) \
        -o $@ $^ $(LDFLAGS)

$(LIBS3_STATIC): $(LIBS3_SOURCES:%.c=$(BUILD)/obj/%.o)
        $(QUIET_ECHO) $@: Building static library
        @ mkdir -p $(dir $@)
        $(VERBOSE_SHOW) $(AR) cr $@ $^

... abbriviated.
//////////////////////////////////////////////////////////////////////////////////////////////
工作目录:/home/usrname/prj/app/framework/camera/cdma\u manage/
/////////////////////////////////////////////////////////////////////////////////////////// 大学本科三年级?=2 LIBS3\u VER\u MINOR?=0 LIBS3版本:=$(LIBS3版本大调)。$(LIBS3版本小调) ifdef冗长 详细=正确 详细回波=@ECHO 冗长的表演= 安静\u ECHO=@ECHO>/dev/null 其他的 冗长=错误 VERBOSE_ECHO=@ECHO>/dev/null 详细显示=@ 安静的回声=@ECHO 恩迪夫 ifndef构建 ifdef调试 BUILD:=生成调试 其他的 构建:=构建 恩迪夫 恩迪夫 ifndef DESTDIR DESTDIR:=/usr 恩迪夫 ifndef CURL_LIBS CURL_LIBS:=$(shell CURL配置--LIBS) 恩迪夫 ifndef CURL\u CFLAGS CURL\u CFLAGS:=$(shell CURL配置--CFLAGS) 恩迪夫 ifndef libxml2u LIBS LIBXML2_LIBS:=$(shell xml2配置--LIBS) 恩迪夫 ifndef LIBXML2\u CFLAGS LIBXML2_CFLAGS:=$(shell xml2配置--CFLAGS) 恩迪夫 ifndef libxml2u LIBS LIBXML2_LIBS:=-L../LIBXML2-2.7.2/.LIBS-lxml2-lm 恩迪夫 ifndef LIBXML2\u CFLAGS LIBXML2\u CFLAGS:=-I/home/usrname/prj/app/framework/camera/cdma\u manage/LIBXML2-2.7.2/include 恩迪夫 ifndef CFLAGS ifdef调试 CFLAGS:=-g 其他的 CFLAGS:=-O3 恩迪夫 恩迪夫 CFLAGS+=-Wall-Werror-Wshadow-Wextra-Iinc\ $(CURL\u CFLAGS)$(LIBXML2\u CFLAGS)\ -DLIBS3\u VER\u MAJOR=\“$(LIBS3\u VER\u MAJOR)\”\ -DLIBS3\u VER\u MINOR=\“$(LIBS3\u VER\u MINOR)\”\ -DLIBS3\u VER=\“$(LIBS3\u VER)\”\ -严格的ANSI标准\ -D_ISOC99_源\ -D_POSIX_C_源=200112L LDFLAGS=$(CURL\u LIBS)$(LIBXML2\u LIBS)-lpthread 冒牌货:全部 全部:导出测试 .冒牌货:出口 导出:libs3头文件 .假冒:安装 安装:导出 $(QUIET\u ECHO)$(DESTDIR)/bin/s3:安装可执行文件 $(详细显示)安装-Dps-mu+rwx,go+rx$(构建)/bin/s3\ $(DESTDIR)/bin/s3 $(安静的回声)\ $(DESTDIR)/lib/libs3.so.$(libs3\u VER):安装共享库 $(详细显示)安装-Dps-mu+rw,go+r\ $(BUILD)/lib/libs3.so.$(libs3\u VER\u MAJOR)\ $(DESTDIR)/lib/libs3.so.$(libs3\u版本) $(安静的回声)\ $(DESTDIR)/lib/libs3.so.$(libs3\u VER\u MAJOR):链接共享库 $(详细显示)ln-sf libs3.so.$(libs3版本)\ $(DESTDIR)/lib/libs3.so.$(libs3\u VER\u MAJOR) $(QUIET_ECHO)$(DESTDIR)/lib/libs3.so:链接共享库 $(VERBOSE_SHOW)ln-sf libs3.so.$(libs3_VER_MAJOR)$(DESTDIR)/lib/libs3.so $(QUIET_ECHO)$(DESTDIR)/lib/libs3.a:安装静态库 $(详细显示)安装-Dp-mu+rw,go+r$(构建)/lib/libs3.a\ $(DESTDIR)/lib/libs3.a $(QUIET\u ECHO)$(DESTDIR)/include/libs3.h:安装标头 $(详细演示)安装-Dp-mu+rw,go+r$(构建)/include/libs3.h\ $(DESTDIR)/include/libs3.h .PHONY:卸载 卸载: $(QUIET_ECHO)安装的文件:卸载 $(详细演示)\ rm-f$(DESTDIR)/bin/s3\ $(DESTDIR)/include/libs3.h\ $(DESTDIR)/lib/libs3.a\ $(DESTDIR)/lib/libs3.so\ $(DESTDIR)/lib/libs3.so.$(libs3\u VER\u MAJOR)\ $(DESTDIR)/lib/libs3.so.$(libs3\u版本) $(构建)/obj/%.o:src/%.c $(安静的回声)$@:编译对象
@mkdir-p$(dir$(BUILD)/dep/$问题似乎是make找不到libxml/parser.h,但需要构建其他内容。您是否检查了该文件是否位于include路径中

ifndef LIBXML2_CFLAGS
        LIBXML2_CFLAGS := -I/home/usrname/prj/app/framework/camera/cdma_manage/libxml2-2.7.2/include
endif
应该在之前添加

ifndef LIBXML2_CFLAGS
        LIBXML2_CFLAGS := $(shell xml2-config --cflags)
endif

您键入了什么命令是的,我确认了目标目录中的parser.h。我怀疑LIBXML2_CFLAGS在我的项目中不起作用。但我仍然不知道哪一行是错误的。@user2621353,您说是在目标目录中,但该目录在包含路径中吗?目标目录和包含目录是两个不同的东西,目标目录是不同的目录很少是包含目录。对不起,目标目录意味着包含路径目录。@user2621353我能建议的最后一件事是使用
make-d
查看make试图对每个文件做什么。希望我能提供更多帮助。我试过make-d。但我找不到目录的路径(/home/usrname/prj/app/framework/camera/cdma_-manage/libxml2)。我当然设置了libxml2_-CFLAGS。我错过了什么?