[devel] Сборка cpp библиотеки
Denis Klimov
=?iso-8859-1?q?zver_=CE=C1_altlinux=2Eorg?=
Сб Ноя 1 12:06:46 MSK 2008
Приветствую!
Собираю пакет thrift, сырцы на cpp.
В процессе сборки пакета ругается так:
Adjusting library links in /usr/src/tmp/thrift-buildroot
./usr/lib64:
libthrift.so.0 -> libthrift.so.0.0.0
libthriftz.so.0 -> libthriftz.so.0.0.0
Verifying ELF objects in /usr/src/tmp/thrift-buildroot
(arch=normal,fhs=normal,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
verify-elf: ERROR: ./usr/lib64/libthriftz.so.0.0.0: undefined symbol:
_ZN8facebook6thrift12GlobalOutputE
error: Bad exit status from /usr/src/tmp/rpm-tmp.26611 (%install)
В c++ не силен.
но вот что успел нарыть.
[builder на berloga thrift-0.0.0]$ c++filt -t
_ZN8facebook6thrift12GlobalOutputE
facebook::thrift::GlobalOutput
Этот GlobalOutput есть в файле lib/cpp/src/Thrift.cpp
http://pastebin.ca/1242225
Он иклудит lib/cpp/src/Thrift.h
http://pastebin.ca/1242227
[builder на berloga cpp]$ nm
/usr/src/RPM/BUILD/thrift-0.0.0/lib/cpp/Thrift.o|grep
_ZN8facebook6thrift12GlobalOutputE
0000000000000110 t _GLOBAL__I__ZN8facebook6thrift12GlobalOutputE
0000000000000000 B _ZN8facebook6thrift12GlobalOutputE
Сборка ./usr/lib64/libthriftz.so.0.0.0 идет таким образом:
x86_64-alt-linux-g++ -shared -nostdlib
/usr/lib64/gcc/x86_64-alt-linux/4.3.2/../../../../lib64/crti.o
/usr/lib64/gcc/x86_64-alt-linux/4.3.2/crtbeginS.o .libs/Thrift.o
.libs/reflecti
on_limited_types.o .libs/Mutex.o .libs/Monitor.o
.libs/PosixThreadFactory.o .libs/ThreadManager.o .libs/TimerManager.o
.libs/Util.o .libs/TBinaryProtocol.o .libs/TDebugProtocol.o .li
bs/TDenseProtocol.o .libs/TJSONProtocol.o .libs/TBase64Utils.o
.libs/TTransportException.o .libs/TFDTransport.o .libs/TFileTransport.o
.libs/THttpClient.o .libs/TSocket.o .libs/TSock
etPool.o .libs/TServerSocket.o .libs/TTransportUtils.o
.libs/TBufferTransports.o .libs/TServer.o .libs/TSimpleServer.o
.libs/TThreadPoolServer.o .libs/TThreadedServer.o .libs/PeekPro
cessor.o -lz -lrt -lpthread -L/usr/lib64/gcc/x86_64-alt-linux/4.3.2
-L/usr/lib64/gcc/x86_64-alt-linux/4.3.2/../../../../lib64
-L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x8
6_64-alt-linux/4.3.2/../../.. -lstdc++ -lm -lc -lgcc_s
/usr/lib64/gcc/x86_64-alt-linux/4.3.2/crtendS.o
/usr/lib64/gcc/x86_64-alt-linux/4.3.2/../../../../lib64/crtn.o
-Wl,-soname -Wl
,libthrift.so.0 -o .libs/libthrift.so.0.0.0
Thrift.o получается таким образом:
x86_64-alt-linux-g++ -DHAVE_CONFIG_H -I. -I../.. -I/usr/include -I./src
-Wall -pipe -Wall -O2 -c src/Thrift.cpp -fPIC -DPIC -o .libs/Thrift.o
x86_64-alt-linux-g++ -DHAVE_CONFIG_H -I. -I../.. -I/usr/include -I./src
-Wall -pipe -Wall -O2 -c src/Thrift.cpp -o Thrift.o >/dev/null 2>&1
Есть какие нибудь мысли, чего не хватает? почему для libthtift не
находится символ, ведь она компилируется сразу с .libs/Thrift.o в
которой есть этот симол.
--
Климов Денис
zver
Подробная информация о списке рассылки Devel