Well, I finally succeeded to manage the problem. Below is how I did it,
for further reference:

 0. Even more first: here are the relevant links:
http://lists.fedoraproject.org/piper...ch/133601.html
https://fedoraproject.org/wiki/Featu...icitDSOLinking
https://fedoraproject.org/wiki/Under...gDSOLinkChange
 There is a change in the default behavior of the linker, that now does not 
*implicitely* links with NEEDED libraries, but requires to pass those libraries 
in explicit manner.

 1. First of all, I was building the software using scons and the
original command line as passed by scons to the environment was:

 /build$ gcc -o program program.o -lm -lsndfile -lmediastreamer -lGL -lGLU 
-lglut -lIrrlicht -litpp libmsf_library.a libbas_library.a libtst_library.a
 /usr/bin/ld: 
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../../lib/libmediastreamer.so: 
undefined reference to symbol 'ortp_malloc'
 /usr/bin/ld: note: 'ortp_malloc' is defined in DSO /usr/lib/libortp.so.8 so 
try adding it to the linker command line
 /usr/lib/libortp.so.8: could not read symbols: Invalid operation
 collect2: ld returned 1 exit status

 The linker suggested "/usr/bin/ld: note: 'ortp_malloc' is defined in
DSO /usr/lib/libortp.so.8 so try adding it to the linker command line"

 2. However, if I added "-lortp" just after -lmediastreamer, it still
complained (why? I cannot explain):

 /build$ gcc -o program program.o -lm -lsndfile -lmediastreamer -lortp -lGL 
-lGLU -lglut -lIrrlicht -litpp libmsf_library.a libbas_library.a 
libtst_library.a
 /usr/bin/ld: 
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../../lib/libmediastreamer.so: 
undefined reference to symbol 'ortp_malloc'
 /usr/bin/ld: note: 'ortp_malloc' is defined in DSO 
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../../lib/libortp.so so try adding it 
to the linker command line
 /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../../lib/libortp.so: could not read 
symbols: Invalid operation
 collect2: ld returned 1 exit status

 3. By hazard, I added the litigious "-lortp" last in the command line,
after all the files:

 /build$ gcc -o program program.o -lm -lsndfile -lmediastreamer -lGL -lGLU 
-lglut -lIrrlicht -litpp libmsf_library.a libbas_library.a libtst_library.a 
-lortp
 libmsf_library.a(msf_sinker_glutdisplay.o): In function `glut_animate':
 /home/user/eclipse-workspace/program/msf_sinker_glutdisplay.c:18: undefined 
reference to `glutPostRedisplay'
 [...skipped...]
 collect2: ld returned 1 exit status

 So, now IT WORKED! I mean, it found the "ortp_malloc" symbol declared
in the "libortp.so" library, but started complaining about not finding
various glut, GLU and GL functions (although the libraries are plassed,
but *before* the files).

 4. Finally, I decided to move all libraries *at the end* of the command
line:

 /build$ gcc -o program program.o libmsf_library.a libbas_library.a
libtst_library.a -lortp -lm -lsndfile -lmediastreamer -lGL -lGLU -lglut
-lIrrlicht -litpp

 and, now, the compilation went flawless.

 Now, the real question remains how to persuade scons to put libraries
at the end, but that is outside this topic.

 I will mark this bug as invalid, since is not a problem with linphone,
but with ld and with scons.

Thanks for your attention.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/876264

Title:
  libmediastreamer.so and libortp.so are not properly linked

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linphone/+bug/876264/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to