如何修复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。我错过了什么?