Tango 9 installation error on ubuntu

Hi all,

while installing tango-9.2.1 on ubantu, I got this error.
/usr/local/lib//libomniORB4.so.2: error adding symbols: DSO missing from command line

Here we are using omniorb version 4.2.1 and zmq version 4.0.5.

Please provide necessary suggestions.

Thanks & Regards,
TCS-GMRT

Are you installing TANGO using debian packages or binaries you compiled yourself?

This error is generally due to a missing “explicit link” against a particular library or a problem with the order in which the library are specified to the linker.

Hi,

We are using binary packages to install tango 9.
I am not sure in which library ‘explicit link’ is missing.
And further How can I specify proper order to linker?

Thanks & Regards,
TCS-GMRT

The experience I have with this (DSO) error makes me think that it’s a pure compilation problem that can’t be solve at binary level. Now, the question is: are you using the right packages for the right ubuntu version? The binary packages are usually compatible with a given ubuntu version and there’s is no guarantee that they can work on another one.

Nicolas is right - we need to know which binary packages are you talking about i.e. where did you get them and how were they made?

Which version of Ubuntu are you using?

I am running Tango9.2.1 on Ubuntu 16.04 built from source code. This works.

Andy

Hi
We are using Ubuntu 14.04 LTA version.
Here is the link from where we downloaded the TANGO 9 binary package:
https://sourceforge.net/projects/tango-cs/files/tango-9.2.1.tar.gz/download

Thanks and Regards,
Team GMRT

I’m lost cause the link you gave points to the tango sources. I expected a link to some debian packages…
So the binaries you’re trying to install come from your own recompilation?

Hi,

Package downloading link is not debian package, those are source files.
We are creating binaries by our own compilation.

In any case, could you please point me to the right source of tango 9 installable package for Ubuntu- 14.04 LTA version.

I suggest to recompile omniORB adding some magic options to your configure.
Could you please provide the full error message you obtain?
There’s certainly an “undefined reference to symbol xxxxx” preceding the “DSO missing from command line” message.
What I’m curious to known is the name of the undefined symbol.

I don’t see the problem. As Nicolas pointed out the “packages” you sent the link to are source code packages and are installed using the “./configure; make;make install” commands as described in the INSTALL file of the source code release. Tango 9.2.1 should work on Ubuntu 14.04 as well. I have tested Tango 9.2.0 on the Tango VM running Ubuntu 14.04. Make sure the system you compile the source code on has the same packages (e.g. omniORB, zmq) as the system you compiled it on. If you have any doubt then recompile the source code on the target system again.

Follow Nicolas’s advice (which crossed my post). He is an expert in Tango + Ubuntu.

Kind regards

Andy

+1 with Andy.
You normally don’t have to add any tricky options to any of the “configure” processes.
IMHO, it’s a good idea to recompile the WHOLE software chain (zmq, omniorb and tango).

After 200 edits of this post, here is the ultimate recipe to compile Tango 9.2.2 under Ubuntu 14.04 using gcc 4.8.

NB: In the following, we assume that we want to install the Tango runtime into a single directory which path is: /home/me/tango-9.2.2-gcc-4.8-gstabs+.

zmq:

download:
https://archive.org/download/zeromq_4.0.7/zeromq-4.0.7.tar.gz

configure zmq:

./configure --prefix=/home/me/tango-9.2.2-gcc-4.8-gstabs+ CFLAGS=-gstabs+ CXXFLAGS=-gstabs+

compile zmq:

make

install zmq:

make install

omniorb:

download src:
https://sourceforge.net/projects/omniorb/files/omniORB/omniORB-4.2.1/omniORB-4.2.1-2.tar.bz2/download

download patch:
http://ftp.esrf.fr/pub/cs/tango/Patches/dii_race.patch

apply patch:
small problem here: files to be patched must be specified by hand

patch -p1 < dii_race.patch 
(Stripping trailing CRs from patch; use --binary to disable.)
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: include/omniORB4/internal/request.h
|===================================================================
|--- include/omniORB4/internal/request.h	(revision 6323)
|+++ include/omniORB4/internal/request.h	(working copy)
--------------------------
File to patch: ./include/omniORB4/internal/request.h
patching file ./include/omniORB4/internal/request.h
(Stripping trailing CRs from patch; use --binary to disable.)
can't find file to patch at input line 37
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: src/lib/omniORB/dynamic/request.cc
|===================================================================
|--- src/lib/omniORB/dynamic/request.cc	(revision 6323)
|+++ src/lib/omniORB/dynamic/request.cc	(working copy)
--------------------------
File to patch: ./src/lib/omniORB/dynamic/request.cc
patching file ./src/lib/omniORB/dynamic/request.cc

configure omniorb:

./configure --prefix=/home/me/tango-9.2.2-gcc-4.8-gstabs+ CFLAGS=-gstabs+ CXXFLAGS=-gstabs+ --enable-static

compile omniorb:

make

install omniorb:

make install

tango:

download src:
https://sourceforge.net/projects/tango-cs/files/tango-9.2.2.tar.gz/download

download patch:
http://ftp.esrf.fr/pub/cs/tango/Patches/p922_1.diff

apply patch:

patch -p1 < p922_1.diff
patching file lib/cpp/server/device_3.cpp
patching file lib/cpp/server/pollobj.cpp
patching file lib/cpp/server/except.h
patching file lib/cpp/server/pollobj.h
patching file lib/cpp/server/except.cpp
patching file lib/cpp/client/proxy_asyn.cpp
patching file lib/cpp/client/proxy_asyn_cb.cpp
patching file lib/cpp/client/cbthread.h
patching file lib/cpp/client/zmqeventconsumer.cpp
patching file lib/cpp/client/devapi_base.cpp
patching file lib/cpp/client/eventkeepalive.cpp
patching file lib/cpp/client/devasyn.h
patching file lib/cpp/client/asynreq.cpp

env.var.:
The following was set while compiling and might have played some role to complete the compilation successfully:

export LD_LIBRARY_PATH=/home/me/tango-9.2.2-gcc-4.8-gstabs+/lib:$LD_LIBRARY_PATH

configure:

./configure --prefix=/home/me/tango-9.2.2-gcc-4.8-gstabs+ --enable-static --with-omni=/home/me/tango-9.2.2-gcc-4.8-gstabs+ --with-zmq=home/me/tango-9.2.2-gcc-4.8-gstabs+ CFLAGS=-gstabs+ CXXFLAGS=-gstabs+ LDFLAGS="-L/home/me/tango-9.2.2-gcc-4.8-gstabs+/lib" 

NB: the LDFLAGS configure option is THE trick!

configure summary:

Configuration (tango):
	Source code location:   .
	Version:                9.2.2
	Compiler:               gcc,g++
	OMNIORB PATH:           /home/me/tango-9.2.2-gcc-4.8-gstabs+
	OMNIORB VERSION:        "4.2.1"
	ZMQ PATH:               /home/me/tango-9.2.2-gcc-4.8-gstabs+
	ZMQ VERSION:            4.0.7
	JAVA PATH:              /usr/bin/java
	JAVA VERSION:           1.8.0_77
	MYSQL CLIENT LIB:        -lmysqlclient_r
	MYSQL VERSION:          5.5.47
	MYSQL CONNECTION:       failed
    build:
	libraries:              yes
	java application:       yes
	access control server:	yes
	database server:        yes
	database schema create: no

compile:

make

install:

make install

done!

Forgot to mention that the “DSO error” was due to a conflict between omniORB 4.1 (debian package previously installed) and omniORB 4.2 (the one we are using with Tango 9). This has been solved adding the LDFLAGS option to the Tango configure command line.

Hi all,

I tried to install as mentioned above.
There was no any error but tango database is not created and that’s why I am unable to start TangoTest device server.
Please provide necessary guidance.

Thanks & Regards,
TCS-GMRT

I suspect a mysql USER and/or PASSWORD problem. It was the case in the example above (configure → database schema create: no).
Please provide the log of your Tango configure command line.

Hi all,

Please find an attachment of logfile created during configure, make and make install of tango 9.

Thanks & Regards,
TCS-GMRT

Dear TCS-GMRT,
Here is what you log file says. I let you conclude…
N.

The tango database is already defined on localhost
Please run 
/usr/bin/mysql -uroot -pp@ssw0rd -hlocalhost tango < ./update_db.sql
manually to force a db update

Hi,

I tried command to manually update db but still tables are not created.
Additionally I have tried to replicate whole installation on different Ubuntu machine but I am facing some problem while configuring tango.
Here is an attached log file of output of configuring tango.

Thanks & Regards,
TCS-GMRT

What was the output of the manual update of the database? Without this output we cannot help you. Are you sure the mysql password is correctly specified? Can you connect to mysql with “mysql -u root -p” or whatever user you specified?

The logfile you attached is incomplete. From the summary it looks like you do not have the mysql development libraries installed nor the mysql user and password specified. Have you read the README for the source code distribution carefully? All the options are described there.

Andy

Hi,

I am able to connect to mysql with “mysql -u root -p”. So if I am not wrong, mysqlclient is installed properly.
But while configuring tango, it is not able to find mysqlclient library.
Further I have attached default generated “config.log” for your reference.

Thanks & Regards,
TCS-GMRT