This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: ld & my Makefile
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Mohsen Pahlevanzadeh wrote:
> I used g++ instead gcc -x c++. When i use -llibstdc++ at the end of
> link line , i receive following lines:
> ////////////////////////////////////////////////////////////////////
> g++ -o urldump urldump.o base64.o buf.o pcaputil.o chksum_ctl.o
> postgres.o linked_list.o -lresolv -lnsl -lrpcsvc -lpcap -lnet
> -lnids -L. -lpq -lpthread -llibstdc++ postgres.o:(.data+0x0):
> multiple definition of `conninfo'
> urldump.o:/home/mohsen/workspace/urldump/./urldump.c:309: first
> defined here /usr/bin/ld: cannot find -llibstdc++ collect2: ld
> returned 1 exit status make: *** [urldump] Error 1
>
> ////////////////////////////////////////////////////////////////////////
>
>
>
> And when i remove -llibstdc++ from the end of link line , i receive
> following lines:
>
> //////////////////////////////////////////////////////////////////////////////
> urldump.o: In function `flushing(void*)': urldump.c:(.text+0xce):
> undefined reference to `flush_to_db(int)' urldump.o: In function
> `process_http_request(tuple4*, unsigned char*, int)':
> urldump.c:(.text+0x359): undefined reference to `buf_init(buf*,
> unsigned char*, int)' urldump.c:(.text+0x378): undefined reference
> to `buf_tok(buf*, void*, int)' urldump.c:(.text+0x3a7): undefined
> reference to `buf_seek(buf*, int, int)' urldump.c:(.text+0x4f0):
> undefined reference to `base64_pton(char const*, unsigned char*,
> unsigned int)' urldump.c:(.text+0x5fe): undefined reference to
> `buf_tok(buf*, void*, int)' urldump.c:(.text+0x653): undefined
> reference to `libnet_host_lookup(unsigned long, unsigned short)'
> urldump.c:(.text+0x693): undefined reference to
> `libnet_host_lookup(unsigned long, unsigned short)'
> urldump.c:(.text+0x6b1): undefined reference to
> `libnet_host_lookup(unsigned long, unsigned short)'
> urldump.c:(.text+0x6d1): undefined reference to
> `filling_node(char*, char*, char*, char*, char*)'
> urldump.c:(.text+0x6ec): undefined reference to `buf_index(buf*,
> void*, int)' urldump.o: In function `main':
> urldump.c:(.text+0x8d9): undefined reference to `strconcat(char*,
> ...)' urldump.c:(.text+0x8e3): undefined reference to
> `pg_connect()' urldump.c:(.text+0xa15): undefined reference to
> `copy_argv(char**)' collect2: ld returned 1 exit status make: ***
> [urldump] Error 1
> ///////////////////////////////////////////////////////////////////
>
>
> What's happen? On Tue, 2009-10-13 at 14:25 -0700, Ian Lance Taylor
> wrote:
>> Mohsen Pahlevanzadeh <mohsen@pahlevanzadeh.org> writes:
>>
>>> On Tue, 2009-10-13 at 08:05 -0700, Ian Lance Taylor wrote:
>>>> Mohsen Pahlevanzadeh <mohsen@pahlevanzadeh.org> writes:
>>>>
>>>>> I wrote a program in C, Not C++.It work good.But when i use
>>>>> "-x c++" in Makefile, i receive following errors:
>>>> You have to link with the g++ driver. Yes, this is
>>>> confusing.
>>>>
>>>>> CC = gcc CFLAGS = -g -Wall -pthread
>>>>> -DHAVE_NET_ETHERNET_H -DLIBNET_LIL_ENDIAN
>>>>> -DDSNIFF_LIBDIR=\"$(libdir)/\" CPP = -x c++ -llibstcd++
>>>>>
>>>> If you use this approach, -llibstdc++ must come at the end of
>>>> the link line.
>>>
>>> How do i solve my problem?I must use C++ not C,So i mandatory
>>> use g++ or -x c++.
>> I recommend that you use "g++" rather than "gcc -x c++".
>>
>> Ian
Ian is right, though I think your getting confused in how this works a
little you might want to try using automake to generate makefiles for
your project, so to make sure its done right.
- --Phil
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkrV52cACgkQAhcOgIaQQ2FdnACeKEXZvCNgyeptuLNStjasrGYC
ynIAn3Vaw7BHlyIdsAfaVGW/qqK7P2lN
=vUyS
-----END PGP SIGNATURE-----