Bug 32104 - Не собирается проект (проблема с линьковкой библиотеки libpqxx)
: Не собирается проект (проблема с линьковкой библиотеки libpqxx)
Status: CLOSED NOTABUG
: Branch p8
(All bugs in Branch p8/libpqxx-devel)
: не указана
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2016-05-16 16:06 by
Modified: 2016-06-23 14:45 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2016-05-16 16:06:16
Имею странную ситуацию с компиляцией "своего" проекта.

[pv@builder-p8 DBServer-PostgreSQL]$ make
/bin/sh ../../libtool --tag=CXX   --mode=link g++ -I/usr/include/pgsql   -g -O2
-funsigned-char -std=c++11 -g -D_GNU_SOURCE -D__x86_64__ -D__linux__
-D__OSVERSION__=2   -I/usr/include/libxml2   -I/usr/include/sigc++-2.0
-I/usr/lib64/sigc++-2.0/include    -D_GNU_SOURCE   -I../../include
-Wnon-virtual-dtor -Woverloaded-virtual -Woverflow -D_GLIBCXX_USE_NANOSLEEP 
-lomniORB4 -lomnithread   -lxml2   -lsigc-2.0    -pthread -lccgnu2 -ldl -lrt
-lpthread   -o uniset2-pgsql-dbserver uniset2_pgsql_dbserver-main.o
libUniSet2-pgsql.la ../../lib/libUniSet2.la -lpqxx   
libtool: link: g++ -I/usr/include/pgsql -g -O2 -funsigned-char -std=c++11 -g
-D_GNU_SOURCE -D__x86_64__ -D__linux__ -D__OSVERSION__=2 -I/usr/include/libxml2
-I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include -D_GNU_SOURCE
-I../../include -Wnon-virtual-dtor -Woverloaded-virtual -Woverflow
-D_GLIBCXX_USE_NANOSLEEP -pthread -o .libs/uniset2-pgsql-dbserver
uniset2_pgsql_dbserver-main.o  -lomniORB4 -lomnithread -lxml2 -lsigc-2.0
-lccgnu2 -ldl -lrt -lpthread ./.libs/libUniSet2-pgsql.so
../../lib/.libs/libUniSet2.so -lpqxx -pthread -Wl,-rpath -Wl,/usr/local/lib
./.libs/libUniSet2-pgsql.so: undefined reference to
`pqxx::dbtransaction::fullname(std::string const&, std::string const&)'
./.libs/libUniSet2-pgsql.so: undefined reference to
`pqxx::internal::throw_null_conversion(std::string const&)'
./.libs/libUniSet2-pgsql.so: undefined reference to
`pqxx::transaction_base::exec(std::string const&, std::string const&)'
./.libs/libUniSet2-pgsql.so: undefined reference to
`pqxx::basic_transaction::basic_transaction(pqxx::connection_base&, std::string
const&, pqxx::readwrite_policy)'
./.libs/libUniSet2-pgsql.so: undefined reference to
`pqxx::connectionpolicy::connectionpolicy(std::string const&)'
collect2: error: ld returned 1 exit status
make: *** [uniset2-pgsql-dbserver] Ошибка 1


При том, что на p7 собирается и на сизифе собирается.
Проблема только на p8.

[pv@builder-p8 DBServer-PostgreSQL]$ rpm -qa | grep libpqxx
libpqxx-4.0.1-alt1_6
libpqxx-devel-4.0.1-alt1_6
------- Comment #1 From 2016-05-16 16:08:16 -------
В Сизифе у меня
# rpm -qa | grep libpqxx
libpqxx-devel-3.2-alt2_0.6.1
libpqxx-3.2-alt2_0.6.1

В p7
# rpm -qa | grep libpqxx
libpqxx-3.2-alt1_0.4
libpqxx-devel-3.2-alt1_0.4
------- Comment #2 From 2016-05-16 17:22:52 -------
Выяснил, что Сизиф свой я просто видимо давно не обновлял, так что в
репозиториях
(Сизифа) лежит:
libpqxx-4.0.1-alt1_6
libpqxx-devel-4.0.1-alt1_6

P.S. Но я пока не рискнул обновлять, чтобы не поломать себе проект.
Если требуется проверка, сообщите, обновлю (откачусь потом в крайнем случае)
------- Comment #3 From 2016-06-21 10:38:09 -------
Уточнение:

Проверил на Сизифе (32,64) нормально собирается без ошибок.
Версия при этом 
[pv@builder64 ~]$ rpm -qa | grep libpqxx
libpqxx-devel-4.0.1-alt1_6
libpqxx-4.0.1-alt1_6

Так что похоже на некорректные пакеты (может копировали из Сизифа а не
собирали)
в p8.
------- Comment #4 From 2016-06-21 11:03:05 -------
Когда соберётся, подключите и проверьте.

#166194 BUILDING #1 [locked] [test-only] p8 copy=boost
------- Comment #5 From 2016-06-21 13:33:10 -------
А как посмотреть статус?
------- Comment #6 From 2016-06-21 14:29:46 -------
(В ответ на комментарий №5)
> А как посмотреть статус?
Зайти на http://git.altlinux.org, ввести в поле 166194 и нажать Enter.
Оно собрано, можете проверять:

apt-repo add 166194
apt-get update
apt-get dist-upgrade
------- Comment #7 From 2016-06-21 14:52:43 -------
хорошо..попробую

P.S. смущает только, что это задание про boost, а моя проблема вроде
на boost не завязана никак.
------- Comment #8 From 2016-06-21 15:01:38 -------
(В ответ на комментарий №7)
> хорошо..попробую
> 
> P.S. смущает только, что это задание про boost, а моя проблема вроде
> на boost не завязана никак.
Попробуйте найти другое решение.
------- Comment #9 From 2016-06-21 15:39:21 -------
Выяснил(и) примерно следующее (попытка объяснения):

В p8 по умолчанию идёт gcc-c++-4.7. В Сизифе gcc5-c++
Возможно что libpxx копировался из Сизифа, а не пересобирался.
Из-за этого и возникает ошибка.

С boost в систему установился gcc5, мы сделали select-gcc 5 и с ним
нормально собирается.
Вообщем получается какой-то конфликт при сборке по умолчанию gcc-4.7
и библиотекой (видимо собранной gcc5) libpqxx.

Как-то так. Возможно в p8 существуют тогда и другие конфликты
для пакетов копируемых из Сизифа.
------- Comment #10 From 2016-06-21 17:08:40 -------
(In reply to comment #9)
> Выяснил(и) примерно следующее (попытка объяснения):
> 
> В p8 по умолчанию идёт gcc-c++-4.7.

Нет, в p8 по умолчанию gcc5.
В обновлённых с p7 gcc автоматически не обновляется и остаётся 4.7.
------- Comment #11 From 2016-06-21 17:46:21 -------
Хорошо. Тогда видимо можно закрывать этот баг.
------- Comment #12 From 2016-06-21 19:31:48 -------
На всякий хочу обратить внимание, что какая-то проблема "подводных стуков"
существует. У нас действительно p7 обновлённый до p8.
Стали собирать другую библиотеку (и как я понимаю столкнулись
с той же неясной проблемой). Пакет собрался нормально, но при попытке
его установить сюда же где он собран (!), получаем ошибку:

osliboscillograph-gtkmm: Требует: libglibmm-2.4.so.1()(64bit) (>=
set:oiZB0ZnLkli2KHcUMub4dgtHliMG1qaJSPdMGMgNVmqaRch0QhH42ufyzPpDVonlZwj4ZH1EfIcM2vK9wy2yrlartvtYZjbgZpuaG1uWZAKwZJLk1gGOgVh4lyam4)
------- Comment #13 From 2016-06-22 11:39:11 -------
NOTABUG
------- Comment #14 From 2016-06-23 14:45:58 -------
На всякий оставлю для истории:

Проблема решается (по крайней мере нам помогло):
- установкой gcc5-c++ 
- установкой automake_1.14

Т.к. они при переезде p7 --> p8 сами не обновляются,
а видимо несовместимы с либами (или devel-пакетами) в p8.