[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