Связывание boost_system при настройке с помощью apt-get install? - PullRequest
1 голос
/ 30 апреля 2019

Установлен Cevelop 1.11.1

apt-get install g++-9
Get:1 http://archive.ubuntu.com/ubuntu disco/main amd64 cpp-9 amd64 9-20190402-1ubuntu1 [8,861 kB]
Get:2 http://archive.ubuntu.com/ubuntu disco/main amd64 libgcc-9-dev amd64 9-20190402-1ubuntu1 [2,355 kB]               
Get:3 http://archive.ubuntu.com/ubuntu disco/main amd64 gcc-9 amd64 9-20190402-1ubuntu1 [9,643 kB]                      
Get:4 http://archive.ubuntu.com/ubuntu disco/main amd64 libstdc++-9-dev amd64 9-20190402-1ubuntu1 [1,685 kB]            
Get:5 http://archive.ubuntu.com/ubuntu disco/universe amd64 g++-9 amd64 9-20190402-1ubuntu1 [10.1 MB]   

apt-get install libboost-dev
Get:1 http://archive.ubuntu.com/ubuntu disco/main amd64 libboost1.67-dev amd64 1.67.0-13 [8,362 kB]
Get:2 http://archive.ubuntu.com/ubuntu disco/main amd64 libboost-dev amd64 1.67.0.1 [3,228 B]                            

Указана boost_system для компоновщика.Это приводит к ошибке.

g++-9 -std=c++1z -O0 -g3 -Wall -Wextra -Wconversion -c -fmessage-length=0 -Wno-attributes -fsanitize=undefined -pthread -o aptcp.o ../aptcp.cpp 
g++-9 -pthread -o aptcp aptcp.o -ltidy -lboost_system -lssl -lcrypto -lxalan-c -lxalanMsg -lxerces-c 
/usr/bin/ld: cannot find -lboost_system
collect2: error: ld returned 1 exit status

sмurf заявляет в своем ответе :

Я бы порекомендовал установить пакет libboost-dev.Он установит любую текущую версию boost для вашей системы и поместит все файлы в нужные места.

За ответ serup Насколько я понимаю, «библиотека установлена'.

$ /sbin/ldconfig -p | grep boost_system | cut -d\> -f2
 /lib/x86_64-linux-gnu/libboost_system.so.1.67.0

Итак, что здесь происходит?

Цель состоит в том, чтобы иметь простой повторяющийся процесс для установки и использования компилятора и библиотек, основанный на существующей работе.разработчиков и разработчиков пакетов.Есть ли недостаток в моем понимании / ожиданиях, в упаковке или библиотеках?

1 Ответ

0 голосов
/ 08 июля 2019

Опция -l найдет только файлы библиотеки .a или .so, но не найдет .so.1.67.0 или другие.Это можно решить, создав символическую ссылку:

ln -sf /your/path/to/libboost_system.so.1.67.0 /your/path/to/libboost_system.so
...