Linux 正在生成rpm-全局找不到文件:
我想生成一个rpm包(Redhat),启动命令时出错:Linux 正在生成rpm-全局找不到文件:,linux,makefile,rpmbuild,rpm-spec,Linux,Makefile,Rpmbuild,Rpm Spec,我想生成一个rpm包(Redhat),启动命令时出错:rpmbuild-ba librabbitmq.spec 处理文件:librabbitmq1-0.10.0-0.x86_64错误:找不到文件 按全球: /root/rpmbuild/BUILDROOT/librabbitmq-0.10.0-0.x86_64/usr/local/lib64/librabbitmq.so.1* RPM生成错误: glob未找到文件:/root/rpmbuild/BUILDROOT/librabbitmq-0.10
rpmbuild-ba librabbitmq.spec
处理文件:librabbitmq1-0.10.0-0.x86_64错误:找不到文件
按全球:
/root/rpmbuild/BUILDROOT/librabbitmq-0.10.0-0.x86_64/usr/local/lib64/librabbitmq.so.1*
RPM生成错误:
glob未找到文件:/root/rpmbuild/BUILDROOT/librabbitmq-0.10.0-0.x86_64/usr/local/lib64/librabbitmq.so.1*
如何在Makefile中更正命令install?有什么建议吗
生成文件:
#Build a static library
NAME= librabbitmq.so
CC := gcc
CFLAGS := -Wall -g -DHAVE_POLL -DHAVE_SELECT -DHAVE_CONFIG_H
OBJDIR := obj
#definition des fichiers headers
INCLUDES := -I/usr/local/include/ -I/root/rpmbuild/SOURCES/librabbitmq-0.10.0 -I/root/rpmbuild/SOURCES/librabbitmq-0.10.0/unix
#definition des librairies
LFLAGS := -L/usr/local/lib64
LDFLAGS :=
LIBS := -L. -lpopt
SRCS_RAW := amqp_api.c amqp_connection.c amqp_consumer.c amqp_framing.c amqp_hostcheck.c amqp_mem.c amqp_openssl_bio.c amqp_openssl.c \
amqp_openssl_hostname_validation.c amqp_socket.c amqp_table.c amqp_tcp_socket.c amqp_time.c amqp_url.c
OBJS := $(addprefix $(OBJDIR)/,$(SRCS_RAW:.c=.o))
.PHONY: all
all: $(NAME)
@echo "$(MAKE) : Tout est genere"
$(NAME):$(OBJS)
ar rcs $(NAME) $(OBJS)
ranlib $(NAME)
#règle pour créer un répertoire d'objets s'il n'existe pas
$(OBJDIR):
mkdir $(OBJDIR)
#définir une règle implicite pour créer des objets dans leur propre répertoire
#(note - ordre uniquement la dépendance sur le répertoire d'objets)
# $<:premier_dependance $@:cible
$(OBJS): $(OBJDIR)/%.o: %.c | $(OBJDIR)
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
prefix:=/usr/local
install: librabbitmq.so
install -m 644 librabbitmq.so $(prefix)/lib64
.PHONY: install
.PHONY: clean
clean:
$(RM) *~ $(NAME)
$(RM) -r $(OBJDIR)
不要将RPM构建为ROOT。 也就是说,您的
Makefile
不好,现在您已经覆盖了计算机上所有的文件。这就是为什么不应该将RPM构建为root
调用
makeinstall
时,Makefile
需要支持GNU标准DESTDIR
变量。它可能还有其他问题,我只搜索了最常见的错误。不要将RPM构建为ROOT。
也就是说,您的Makefile
不好,现在您已经覆盖了计算机上所有的文件。这就是为什么不应该将RPM构建为root
调用
makeinstall
时,Makefile
需要支持GNU标准DESTDIR
变量。它可能还有其他问题,我只是搜索了一下最常见的错误。正确而无用的答案是:您需要让librabbitmq
提供此文件。这里要做的事情是向包维护人员或知道如何构建包的人寻求帮助。这个问题需要研究,这里没有足够的信息来回答。正确而无用的答案是:您需要让librabbitmq
提供此文件。这里要做的事情是向包维护人员或知道如何构建包的人寻求帮助。这个问题需要研究,这里没有足够的信息来回答。
#
# spec file for package librabbitmq
#
%global sover 1
%global libname %{name}%{sover}
Name: librabbitmq
Version: 0.10.0
Release: 0
Summary: Amqp library in C
Source: librabbitmq-0.10.0.tar.xz
# Some internal tests are licenced as GPL-3.0+ - they are only used in
# check phase and not shipped further
License: LGPL-2.1-or-later
Group: Development/Libraries/C and C++
Url: https://github.com/alanxz/rabbitmq-c
%description
This is a C-language AMQP client library for use with v2.0+ of the RabbitMQ broker.
%package -n %{libname}
Summary: Amqp library written in C
License: LGPL-2.1-or-later
Group: System/Libraries
%define _prefix /usr/local
#%define _unpackaged_files_terminate_build 0
%description -n %{libname}
Shared library for %{name} (%{summary}).
%package devel
Summary: Amqp library written in C
License: LGPL-2.1-or-later
Group: Development/Libraries/C and C++
Requires: %{libname} = %{version}
Requires: pkgconfig
%description devel
Headers, pkg-config files, so link and other development files for %{name}
(%{summary}).
%prep
%setup -q
%build
make
%install
%make_install
%check
%post -n %{libname} -p /sbin/ldconfig
%postun -n %{libname} -p /sbin/ldconfig
%files -n %{libname}
%{_libdir}/%{name}.so.%{sover}*
%files devel
%doc CHANGELOG.md
%{_includedir}/rabbitmq.h
%{_libdir}/%{name}.so
%changelog