Linux 正在生成rpm-全局找不到文件:

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

我想生成一个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.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