[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: undefined reference
From: |
Pascal J. Bourguignon |
Subject: |
Re: undefined reference |
Date: |
Fri, 26 Feb 2010 12:34:09 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1 (darwin) |
rrlangly <richard.ringo.langly@gmail.com> writes:
> Hi,
>
> This is a small test case I wrote in which I can't understand why I have an
> undefined reference. I have an undefined reference which I thought only
> requires linking w/ the libs that contain this symbol, which I am. The
> function dm_connect() is in the library libdm, and this is on the g++
> command line when I compile as shown. The libdm is a C library and I'm
> calling this in my C++ program.
>
> Can anyone help me understand what I'm doing wrong?
>
> --- Compile and Error
>
> $ g++ $(pkg-config --cflags glib-2.0) -I/usr/include -I/usr/local/include
> -I/home/joe/Projects/net-1.0/util -L/usr/local/lib
> -L/home/joe/Projects/net-1.0/libdm $(pkg-config --libs glib-2.0) -ldm
> main.cpp
> /tmp/ccksTRGA.o: In function `main':
> main.cpp:(.text+0x30): undefined reference to `dm_connect(char*, unsigned
> short)'
> collect2: ld returned 1 exit status
>
> --- Source
> #include <stdio.h>
>
> #include "gxclient.h"
>
> using namespace std;
>
> int main ()
> {
> int fd = -1;
>
> uint16_t port = 11002;
>
> char *dmhostname = "localhost";
>
> fd = dm_connect(dmhostname, port);
>
> if (fd < 0) {
> printf("failed\n");
> }
>
> return 0;
> }
Check what dm library is loaded:
gcc -Wl,-t ...
or
ld -t ...
Check the symbols in that library:
nm /usr/lib/libdm.so.1.0.0
or
nm /usr/lib/libdm.so.1.0.0 | grep dm_connect
--
__Pascal Bourguignon__