У шляху пошуку pkg-config не знайдено libprotobuf


1

Я встановлюю protobuf-c 1.3.2

після ./конфігуруйте його

    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
Яку саме проблему ви намагаєтеся вирішити? Чому ви вважаєте, що ваша команда pkg-config повинна працювати?
steeldriver

Ей, коли я встановлюю, make installя отримав питання дозволу, які я забув згадати. Я видалив і встановив знову з доступом до sudo. А тепер його непокоїть.
Lohit raj

Відповіді:


1

Чому ви хочете скласти пакет сховищ протобуфа-c Ubuntu з джерела? Це добра практика і зручніше віддати перевагу встановленню пакетів репозиторію Ubuntu з apt, а не завантажувати їх і компілювати. protobuf-c автоматично оновлюється, коли оновлення стає доступним, якщо встановити його з apt. Тож ви бачите, що безпечніше встановити це за допомогою обох способів.

Щоб встановити компілятор протоколів Buffers C (protobuf-c) у всіх підтримуваних на даний момент версіях Ubuntu, відкрийте термінал і введіть:

sudo apt install protobuf-c-compiler  

У Ubuntu 18.04 ця команда встановлює версію 1.2.1 protobuf-c, а в Ubuntu 19.04 ця версія встановлює версію 1.3.1.

Буфери протоколів - це гнучкий, ефективний, автоматизований механізм серіалізації структурованих даних - схожий на XML, але менший, швидший і простіший. Ви визначаєте, як ви хочете структурувати ваші дані один раз, тоді ви можете використовувати спеціальний згенерований вихідний код, щоб легко писати та читати структуровані дані до та з різних потоків даних та на різних мовах. Ви навіть можете оновити свою структуру даних, не порушуючи розгорнутих програм, складених у форматі "старого".


Дякую Карел, вибач, що я не поставив статус зробити. Все одно, дякую.
Lohit raj

0

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працювали.


Це стандартний спосіб компіляції всіх пакетів .tar.gz з джерела, але залишається питання, чому ви компілювали protobuf-c з джерела замість того, щоб встановлювати його з apt ? Це добра практика і зручніше віддати перевагу встановленню пакетів репозиторію Ubuntu з apt, а не завантажувати їх і компілювати.
карел
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.