Home Man
Search
Today's Posts
Register

Post questions about C, C++, Java, SQL, and other programming languages here.

C/C++ shared libraries on Linux.

Tags
dinamyc shared library, ldd, programming

Login to Reply

 
Thread Tools Search this Thread
# 1  
Old 04-15-2018
C/C++ shared libraries on Linux.

This is the first time that I created a dynamic library in linux and although the program works, I do not get the correct information about the library when executing ldd.

I explain the details:

1) Source code:

bye_fn.c:
Code:
#include <stdio.h>
#include "hello.h"

void bye (const char* name)
{
printf ("\n\n%s, I see you soon !\n\n", name);
}

hello_fn.c:
Code:
#include <stdio.h>
#include "hello.h"

void hello (const char* name)
{
printf ("\n\nHello, %s !\n\n", name);
}


hello.c:
Code:
#include "hello.h"
#include <stdio.h>

int main (void)
{
hello ("José");
printf ("Please to meet you. You will work with us. You start next week. Congratulations !\n");
bye ("José");

return 0;
}


2) Steps followed to obtain the shared library and the executable program:

Code:
gcc -fPIC -Wall -c hello_fn.c

gcc -fPIC -Wall -c bye_fn.c

gcc -shared -Wall -o libhello.so hello_fn.o bye_fn.o

gcc hello.c libhello.so -o hello


3) Steps followed to execute the "hello" program:

Code:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:./

./hello

It works right.


4) My question:

If I execute the command: ldd hello
the output is:
Code:
    linux-vdso.so.1 =>  (0x00007ffc1db7c000)
    libhello.so => not found
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff63dd2000)
    /lib64/ld-linux-x86-64.so.2 (0x00007eff6419b000)

I would to get correctly the information about the library "libhello.so" that is being used by "hello".

What should I change or add in the steps described in point 2, to achieve this?
Moderator's Comments:
C/C++ shared libraries on Linux. Please use CODE tags when displaying sample input, output, and code segments.

Last edited by Don Cragun; 04-15-2018 at 06:23 PM.. Reason: Add missing CODE and ICODE tags.
The Following 2 Users Say Thank You to jose_spain For This Useful Post:
dodona (04-16-2018), yifangt (05-17-2018)
# 2  
Old 04-15-2018
libhello.so has to be in the LD_LIBIRARY_PATH variable for ldd to find it. You should NOT put personal directories in the path.
The Following User Says Thank You to jim mcnamara For This Useful Post:
dodona (04-16-2018)
# 3  
Old 04-16-2018
Quote:
Originally Posted by jim mcnamara
libhello.so has to be in the LD_LIBIRARY_PATH variable for ldd to find it. You should NOT put personal directories in the path.
for testing purposes, why not! Jose only want's to see that it works principally.
# 4  
Old 04-16-2018
Thanks,

I have excuted:

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:[FULL PATH TO .so FILE]

where:
[FULL_PATH_TO .so FILE] = /home/jose/.../hello_program

But if I execute the command: ldd hello
the output follows being:

linux-vdso.so.1 => (0x00007ffc1db7c000)
libhello.so => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff63dd2000)
/lib64/ld-linux-x86-64.so.2 (0x00007eff6419b000)

I am working on Ubuntu 14.0.4
The Following User Says Thank You to jose_spain For This Useful Post:
dodona (04-17-2018)
# 5  
Old 04-17-2018
Quote:
Originally Posted by jose_spain
Thanks,
I have excuted:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:[FULL PATH TO .so FILE]
where:
[FULL_PATH_TO .so FILE] = /home/jose/.../hello_program
...
LD_LIBRARY_PATH needs the path and not the file name.
check out: LD_LIBRARY_PATH=${LD_LIBRARY_PATH}: /home/jose/.../
# 6  
Old 04-22-2018
There are also programs like patchelf that can set the "rpath" after linking.
The Following User Says Thank You to dryden For This Useful Post:
dodona (04-30-2018)
# 7  
Old 04-30-2018
some simple, nevertheless working code(bin:main.c so:so.c):

  • libtool --mode=compile gcc -c -O3 so.c
  • libtool --mode=link gcc -o libso.la so.lo -rpath /usr/local/lib -version-info 6:0:5
  • gcc -L`pwd`/.libs -Wall -o so main.c -lso
  • export LD_LIBRARY_PATH=.
  • ./<app>
  • Login to Reply

    « Previous Thread | Next Thread »
    Thread Tools Search this Thread
    Search this Thread:

    Advanced Search
    Display Modes

    More UNIX and Linux Forum Topics You Might Find Helpful
    Thread Thread Starter Forum Replies Last Post
    Self contained shared libraries lkb Solaris 6 12-02-2013 11:05 AM
    shared libraries problem rahulsword Red Hat 0 03-21-2012 01:19 AM
    Loaded Shared Libraries jhatzics AIX 1 01-18-2011 05:36 AM
    Naming conventions for shared libraries in Linux neked UNIX for Advanced & Expert Users 2 11-20-2008 10:36 AM
    Shared Libraries- CRITICAL !! archana485 UNIX for Advanced & Expert Users 1 06-30-2008 06:50 AM
    static and shared libraries JamesByars UNIX for Advanced & Expert Users 2 01-13-2008 01:29 PM
    how to view loaded shared libraries by running processes in linux princelinux Programming 3 01-17-2007 06:44 AM
    Shared Libraries wojtyla Linux 1 09-16-2005 12:14 AM
    shared libraries thalex Programming 2 11-29-2001 08:32 AM
    Shared libraries Micky Programming 0 11-12-2001 03:25 AM


    All times are GMT -4. The time now is 11:00 PM.

    Unix & Linux Forums Content Copyright©1993-2018. All Rights Reserved.
    UNIX.COM Login
    Username:
    Password:  
    Show Password