HerbertKoelman / cpp-atmi

Application-to-Transaction Monitor Interface (ATMI) C++ library
http://herbertkoelman.github.com/cpp-atmi
Other
7 stars 0 forks source link

Utility programs doesn't compile on Fedora (RedHat) 23 #101

Closed HerbertKoelman closed 7 years ago

HerbertKoelman commented 7 years ago

Check linker options. Make returns:

[herbert@asus utls]$ make decode
CC=g++ CFLAGS=" -x c++ -std=c++11 -frtti -D GIT_COMMIT="00ccbeb1ee23c3330c36d93c988b10a8d73f54a3"  -g -I ./ -I ../include  -I/home/herbert/include -I/opt/oracle/products/tuxedo12.2.2.0.0/include  -L ../lib  -L/home/herbert/lib -L/opt/oracle/products/tuxedo12.2.2.0.0/lib"  \
buildclient    -f decode.bcl -o ../bin/decode -l "-lfml++  -lcltatmi++"
../lib/libcltatmi++.a(transaction.o): dans la fonction « atmi::transaction::call(atmi::buffer&, int*, int, int) »:
transaction.cpp:(.text+0x29f): référence indéfinie vers « atmi::buffer::size() const »
transaction.cpp:(.text+0x2ab): référence indéfinie vers « atmi::buffer::get_buffer() »
transaction.cpp:(.text+0x2e2): référence indéfinie vers « atmi::buffer::set_buffer(Fbfr32*) »
../lib/libcltatmi++.a(transaction.o): dans la fonction « atmi::transaction::acall(atmi::buffer&) »:
transaction.cpp:(.text+0x3c9): référence indéfinie vers « atmi::buffer::size() const »
transaction.cpp:(.text+0x3d4): référence indéfinie vers « atmi::buffer::get_buffer() »
../lib/libcltatmi++.a(transaction.o): dans la fonction « atmi::transaction::reply(atmi::buffer&, int*, int*) »:
transaction.cpp:(.text+0x50a): référence indéfinie vers « atmi::buffer::get_buffer() »
transaction.cpp:(.text+0x517): référence indéfinie vers « atmi::buffer::size() const »
transaction.cpp:(.text+0x54a): référence indéfinie vers « atmi::buffer::set_buffer(Fbfr32*) »
../lib/libcltatmi++.a(queue.o): dans la fonction « atmi::queue::enqueue(atmi::buffer&) »:
queue.cpp:(.text+0xc98): référence indéfinie vers « atmi::buffer::get_buffer() »
../lib/libcltatmi++.a(queue.o): dans la fonction « atmi::queue::enqueueReply(atmi::buffer&) »:
queue.cpp:(.text+0xd38): référence indéfinie vers « atmi::buffer::get_buffer() »
../lib/libcltatmi++.a(queue.o): dans la fonction « atmi::queue::dequeueReply(atmi::buffer&) »:
queue.cpp:(.text+0x1018): référence indéfinie vers « atmi::buffer::get_buffer() »
../lib/libcltatmi++.a(queue.o): dans la fonction « atmi::queue::dequeue(atmi::buffer&) »:
queue.cpp:(.text+0x1059): référence indéfinie vers « atmi::buffer::get_buffer() »
queue.cpp:(.text+0x108a): référence indéfinie vers « atmi::buffer::set_buffer(Fbfr32*) »
collect2: erreur : ld a retourné 1 code d'état d'exécution
CMDTUX_CAT:512: ERROR: Cannot execute C compiler g++   -x c++ -std=c++11 -frtti -D GIT_COMMIT=00ccbeb1ee23c3330c36d93c988b10a8d73f54a3  -g -I ./ -I ../include  -I/home/herbert/include -I/opt/oracle/products/tuxedo12.2.2.0.0/include  -L ../lib  -L/home/herbert/lib -L/opt/oracle/products/tuxedo12.2.2.0.0/lib -I$TUXDIR/include -o ../bin/decode   -L${TUXDIR}/lib decode.bcl  -ltux -lbuft  -lfml -lfml32 -lengine  -ldl -lpthread  -lfml++  -lcltatmi++ 
Makefile:74: recipe for target 'decode' failed
make: *** [decode] Error 1
HerbertKoelman commented 7 years ago

In make file (utls/Makefile), first reference atmi++ libraries and than fml++.

Apparently unreferenced symbols are discarded when libraries are loaded. Library fml++ content being referenced in atmi++, if one loads first fml++ then the symbols it contains are discarded...