help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Creating and sharing a c++ shared library ?


From: vivekian
Subject: Re: Creating and sharing a c++ shared library ?
Date: 25 Feb 2007 12:46:45 -0800
User-agent: G2/1.0

On Feb 25, 2:19 pm, Paul Pluzhnikov <ppluzhnikov-...@charter.net>
wrote:
> "vivekian" <vivekli...@gmail.com> writes:
> > These are the steps i followed to create a shared library
>
> These steps are un-necessarily complicated.
> You are (apparently) following some DSO-HOWTO, but without
> understanding why things are done in "complicated" way, and whether
> that complicated way is appropriate for your situation.
>
> > g++ -shared -Wl,-soname,libcppsocket.so.1 -o libcppsocket.so.1.0.1
> > SockException.o Socket.o TcpSocket.o UdpSocket.o SocketReaderWriter.o -
> > lc
>
> Until you need "external library versioning", I suggest you use
> "simple" way:
>
>   g++ -shared -o libcppsocket.so \
>     SockException.o Socket.o TcpSocket.o UdpSocket.o SocketReaderWriter.o
>
> > 5. Compiling this test program
>
> > g++  main.cpp
> > /tmp/ccPqeVa9.o: In function `main':
> > main.cpp:(.text+0x8a): undefined reference to `TcpSocket::TcpSocket()'
> > main.cpp:(.text+0x95): undefined reference to
> > `TcpSocket::~TcpSocket()'
> > collect2: ld returned 1 exit status
>
> > gives the above error.
>
> > This i suppose indicates that the library has to be linked.
>
> Correct.
>
> > But the following doesnt help
> > g++ main.cpp -llibcppsocket
>
> And it shouldn't help. Provided /usr/lib/libcppsocket.so exists,
> correct link line is:
>
>   g++ main.cpp -lcppsocket
>
> > What am i missing here ?
>
> Well, for starters you didn't tell us (nor paid attention to)
> the error linker gave you, which likely was:
>
>   /usr/bin/ld: cannot find -llibcppsocket

Yes, you are right , i didnt mention that , but yes i did notice it.
>
> Please read "info gcc" to understand what library the linker will
> search for given '-llibcppsocket' argument. Hint libcppsocket.*
> it is not.

I did. This is the relevant portion i guess :
"The only difference between using an -l option and specifying a file
name is that -l surrounds library with lib and .a and   searches
several directories"

That solved the problem. It compiles fine. I was following a HowTo
without understanding :) .

Thanks a ton . Appreciate it.

vivekian



reply via email to

[Prev in Thread] Current Thread [Next in Thread]