Link time problems with libipq example code
Hello,
I've been trying to compile the libipq example code in the libipq man page.
My kernel is 2.4.18, distributed by RedHat as 2.4.18-14. I made a symlink to the kernel source at /usr/src/linux. I built ipchains 1.2.7a as follows:
make
su
make install-devel
I copied the code from the man page into a file called ipqtst.c and compiled:
gcc -I/usr/local/include -L/usr/local/lib -lipq -o ipqtst ipqtst.c /tmp/ccGDqSOi.o: In function `die':
/tmp/ccGDqSOi.o(.text+0xf): undefined reference to ipq_perror' /tmp/ccGDqSOi.o(.text+0x1d): undefined reference to ipq_destroy_handle' /tmp/ccGDqSOi.o: In function `main':
/tmp/ccGDqSOi.o(.text+0x49): undefined reference to ipq_create_handle' /tmp/ccGDqSOi.o(.text+0x81): undefined reference to ipq_set_mode' /tmp/ccGDqSOi.o(.text+0xb8): undefined reference to ipq_read' /tmp/ccGDqSOi.o(.text+0xe4): undefined reference to ipq_message_type' /tmp/ccGDqSOi.o(.text+0x116): undefined reference to ipq_get_msgerr' /tmp/ccGDqSOi.o(.text+0x141): undefined reference to ipq_get_packet' /tmp/ccGDqSOi.o(.text+0x166): undefined reference to `ipq_set_verdict'
collect2: ld returned 1 exit status
I get the same errors when I compile statically:
gcc -static -I/usr/local/include -L/usr/local/lib -lipq -o ipqtst ipqtst.c
Is libipq not the right thing to link against? Am I doing something else wrong (did I build ipchains incorrectly?)
Signature · 3 lines
Craig Davison Symantec Corporation +1 (403) 213-3939 ext. 228
Here's the output from nm:
nm /usr/local/lib/libipq.a
libipq.o:
U bind
U close
U __errno_location
U fprintf
U fputc
U fputs
U free
U fwrite
U getpid
00000224 T ipq_create_handle000004a4 T ipq_ctl
00000334 T ipq_destroy_handle
00000000 D ipq_errmap
00000088 d ipq_errno000004b0 T ipq_errstr000003c4 T ipq_get_msgerr000003d4 T ipq_get_packet000003b8 T ipq_message_type
00000060 t ipq_netlink_recvfrom
00000034 t ipq_netlink_sendmsg
00000000 t ipq_netlink_sendto000004c4 T ipq_perror000003ac T ipq_read0000035c T ipq_set_mode000003e0 T ipq_set_verdict
00000208 t ipq_strerror
U malloc
U recvfrom
U select
U sendmsg
U sendto
U socket
U stderr
U strerror
Quoted 1 line · Craig Davison
I've been trying to compile the libipq example code in the libipq man page.
Signature · 3 lines
Craig Davison Symantec Corporation +1 (403) 213-3939 ext. 228
Hi,
Yes, even I have come across such problems.... I just complied it using the following command.
$gcc -I/usr/local/include -L/usr/local/lib -o ipqtst ipqtst.c -lipq
Just notice that I have put "-lipq" in the end... Well, I have not been able to reason, why it works this way. Its probably the gcc issue.
Hope this helps.
Bye,
Narendra.
Quoted 27 lines · Craig Davison
Hello,
I've been trying to compile the libipq example code in the libipq man page.My kernel is 2.4.18, distributed by RedHat as 2.4.18-14. I made a symlink to the kernel source at
/usr/src/linux. I built ipchains 1.2.7a as follows:
make
su
make install-develI copied the code from the man page into a file called
ipqtst.cand compiled:
gcc -I/usr/local/include -L/usr/local/lib -lipq -o ipqtstipqtst.c/tmp/ccGDqSOi.o: In function `die':
/tmp/ccGDqSOi.o(.text+0xf): undefined reference toipq_perror' /tmp/ccGDqSOi.o(.text+0x1d): undefined reference toipq_destroy_handle'/tmp/ccGDqSOi.o: In function `main':
/tmp/ccGDqSOi.o(.text+0x49): undefined reference toipq_create_handle' /tmp/ccGDqSOi.o(.text+0x81): undefined reference toipq_set_mode' /tmp/ccGDqSOi.o(.text+0xb8): undefined reference toipq_read' /tmp/ccGDqSOi.o(.text+0xe4): undefined reference toipq_message_type' /tmp/ccGDqSOi.o(.text+0x116): undefined reference toipq_get_msgerr' /tmp/ccGDqSOi.o(.text+0x141): undefined reference toipq_get_packet' /tmp/ccGDqSOi.o(.text+0x166): undefined reference to `ipq_set_verdict'
collect2: ld returned 1 exit statusI get the same errors when I compile statically:
gcc -static -I/usr/local/include -L/usr/local/lib -lipq -o ipqtstipqtst.c
Quoted 8 lines
Is libipq not the right thing to link against? Am I doing something else wrong (did I build ipchains incorrectly?)
--
Craig Davison
Symantec Corporation
+1 (403) 213-3939 ext. 228
In the middle of difficulty..... lies Opportunity. (Albert Einstein)
--------------------------------------------------------------------
Narendra Prabhu. B Free Software at its product-ive best.
DeepRoot Linux http://www.deeproot.co.in
---- Server Appliances ----
---- Linux Support and Services ----
-------------------------------------------------------------------
That did it - thanks!
Signature · 3 lines
Craig Davison Symantec Corporation +1 (403) 213-3939 ext. 228
Quoted 9 lines · Narendra Prabhu. B
Hi,
Yes, even I have come across such problems.... I just complied it using the following command.
$gcc -I/usr/local/include -L/usr/local/lib -o ipqtst
ipqtst.c-lipqJust notice that I have put "-lipq" in the end... Well, I have not been able to reason, why it works this way. Its probably the gcc issue.
Hi Narendra,
The behaviour you are observing is related to the way gcc resolves sumbols while compiling code.
http://webclub.kcom.ne.jp/ma/colinp/win32/tools/link.html
"
gcc checks libraries in the order they appear, and it will only resolve references to symbols in libraries earlier on the command line if the object containing the symbol definition was already included for some other reason. Thus if foo.o uses a function in libstuff.a the following command line will fail:
gcc -o foobar.exe -lstuff foo.o bar.o
"
Which is what you guys are running into.
Ranjeet Shetye
Senior Software Engineer
Zultys Technologies
771 Vaqueros Avenue
Sunnyvale CA 94085
USA
[email protected]
http://www.zultys.com/
Quoted 84 lines
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Narendra Prabhu. B
Sent: Friday, December 20, 2002 9:30 PM
To: Craig Davison
Cc: [email protected]
Subject: Re: Link time problems with libipq example codeHi,
Yes, even I have come across such problems.... I just complied it using the following command.
$gcc -I/usr/local/include -L/usr/local/lib -o ipqtst
ipqtst.c-lipqJust notice that I have put "-lipq" in the end... Well, I have not been able to reason, why it works this way. Its probably the gcc issue.
Hope this helps.
Bye,
Narendra.Quoted 2 lines · Craig Davison
Hello,
I've been trying to compile the libipq example code in thelibipq man
Quoted 7 lines
page.
My kernel is 2.4.18, distributed by RedHat as 2.4.18-14. I made a symlink to the kernel source at
/usr/src/linux. I built ipchains 1.2.7a as follows: make su
make install-develQuoted 6 lines
I copied the code from the man page into a file called
ipqtst.cand
compiled: gcc -I/usr/local/include -L/usr/local/lib -lipq -o ipqtstipqtst.c/tmp/ccGDqSOi.o: In function `die':
/tmp/ccGDqSOi.o(.text+0xf): undefined reference to `ipq_perror' /tmp/ccGDqSOi.o(.text+0x1d): undefined reference to`ipq_destroy_handle'
Quoted 2 lines
/tmp/ccGDqSOi.o: In function `main':
/tmp/ccGDqSOi.o(.text+0x49): undefined reference to`ipq_create_handle'
Quoted 3 lines
/tmp/ccGDqSOi.o(.text+0x81): undefined reference to
ipq_set_mode' /tmp/ccGDqSOi.o(.text+0xb8): undefined reference toipq_read' /tmp/ccGDqSOi.o(.text+0xe4): undefined reference to`ipq_message_type'
Quoted 1 line
/tmp/ccGDqSOi.o(.text+0x116): undefined reference to
`ipq_get_msgerr'
Quoted 1 line
/tmp/ccGDqSOi.o(.text+0x141): undefined reference to
`ipq_get_packet'
Quoted 1 line
/tmp/ccGDqSOi.o(.text+0x166): undefined reference to
`ipq_set_verdict'
Quoted 6 lines
collect2: ld returned 1 exit status
I get the same errors when I compile statically:
gcc -static -I/usr/local/include -L/usr/local/lib -lipq -o ipqtstipqtst.cQuoted 9 lines
Is libipq not the right thing to link against? Am I doing something else wrong (did I build ipchains incorrectly?)
--
Craig Davison
Symantec Corporation
+1 (403) 213-3939 ext. 228In the middle of difficulty..... lies Opportunity. (Albert Einstein)
--------------------------------------------------------------------
Narendra Prabhu. B Free Software at its product-ive best.
DeepRoot Linux http://www.deeproot.co.in
---- Server Appliances ----
---- Linux Support and Services ----
-------------------------------------------------------------------