在 pkg-config 搜索路径中未找到软件包 libprotobuf

在 pkg-config 搜索路径中未找到软件包 libprotobuf

我正在安装 protobuf-c 1.3.2

./configure 后显示

    protobuf-c 1.3.2

        CC:                     gcc
        CFLAGS:                 -g -O2
        CXX:                    g++ -std=c++11
        CXXFLAGS:               -g -O2
        LDFLAGS:                
        LIBS:                   

        prefix:                 /usr/local
        sysconfdir:             ${prefix}/etc
        libdir:                 ${exec_prefix}/lib
        includedir:             ${prefix}/include
        pkgconfigdir:           ${libdir}/pkgconfig

        bigendian:              no
        protobuf version:       libprotoc 3.8.0

pkg-config --cflags 'libprotobuf >= 1.0.0'不起作用。它说

Package libprotobuf was not found in the pkg-config search path.
Perhaps you should add the directory containing `libprotobuf.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libprotobuf' found

pkg-config --variable pc_path pkg-config节目

/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

答案1

为什么要从源代码构建 protobuf-c Ubuntu 存储库包?使用 apt 安装 Ubuntu 存储库包而不是下载并编译它们是一种很好的做法,而且更方便。如果使用 apt 安装,protobuf-c 会在有更新可用时自动更新。因此,您会发现使用 apt 安装它更安全。

要在所有当前支持的 Ubuntu 版本中安装协议缓冲区 C 编译器(protobuf-c),请打开终端并输入:

sudo apt install protobuf-c-compiler  

在 Ubuntu 18.04 中,此命令安装 protobuf-c 1.2.1 版本,在 Ubuntu 19.04 中,此命令安装 1.3.1 版本。

协议缓冲区是一种灵活、高效、自动化的结构化数据序列化机制 - 类似于 XML,但更小、更快、更简单。您只需定义一次数据的结构,然后就可以使用特殊生成的源代码轻松地将结构化数据写入各种数据流并使用各种语言读取数据。您甚至可以更新数据结构,而不会破坏针对“旧”格式编译的已部署程序。

答案2

make install节目

make  install-am
make[1]: Entering directory '/home/lohit/Documents/practise/protobuf-c'
make[2]: Entering directory '/home/lohit/Documents/practise/protobuf-c'
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ./libtool   --mode=install /usr/bin/install -c   protobuf-c/libprotobuf-c.la '/usr/local/lib'
libtool: install: /usr/bin/install -c protobuf-c/.libs/libprotobuf-c.so.1.0.0 /usr/local/lib/libprotobuf-c.so.1.0.0
/usr/bin/install: cannot remove '/usr/local/lib/libprotobuf-c.so.1.0.0': Permission denied
make[2]: *** [Makefile:1103: install-libLTLIBRARIES] Error 1
make[2]: Leaving directory '/home/lohit/Documents/practise/protobuf-c'
make[1]: *** [Makefile:2192: install-am] Error 2
make[1]: Leaving directory '/home/lohit/Documents/practise/protobuf-c'
make: *** [Makefile:2186: install] Error 2

没有权限访问该路径。 make uninstall && sudo make install有效。

相关内容