Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a problem here that I can't quite explain. The linker is complaining that a symbol from the Oracle client libraries is undefined:

$ gcc-4.6 -L/usr/local/oracle/product/11.2.0/dbhome_1/lib -lcurl -m64 -lpthread -lclntsh  advarc.o wintbx.a winlib_o.a   -o advarc
advarc.o: In function `main':
advarc.c:(.text+0x1c68): undefined reference to `sqlcxt'
advarc.c:(.text+0x1f19): undefined reference to `sqlcxt'
advarc.c:(.text+0x1fb3): undefined reference to `sqlcxt'
advarc.c:(.text+0x21cc): undefined reference to `sqlcxt'
advarc.c:(.text+0x25f9): undefined reference to `sqlcxt'
advarc.o:advarc.c:(.text+0x2693): more undefined references to `sqlcxt' follow
wintbx.a(stlthread.o): In function `initialiseThread':
stlthread.c:(.text+0x70): undefined reference to `pthread_setconcurrency'
stlthread.c:(.text+0x8a): undefined reference to `pthread_create'
winlib_o.a(winlib_o.o): In function `dbconnect':
winlib_o.c:(.text+0x8f6): undefined reference to `sqlcxt'
winlib_o.c:(.text+0xa39): undefined reference to `sqlcxt'
winlib_o.a(winlib_o.o): In function `dbdisconnect':
winlib_o.c:(.text+0xb03): undefined reference to `sqlcxt'
winlib_o.a(winlib_o.o): In function `dbdynamic':
winlib_o.c:(.text+0xd44): undefined reference to `sqlcxt'
winlib_o.c:(.text+0xef3): undefined reference to `sqlcxt'
winlib_o.a(winlib_o.o):winlib_o.c:(.text+0xf89): more undefined references to `sqlcxt' follow
collect2: ld returned 1 exit status

But according to nm, the symbol is defined:

nm /usr/local/oracle/product/11.2.0/dbhome_1/lib/ | grep sqlcxt
0000000001d154f0 T sqlcxt

I was able to build and run the same code up to (and including) Ubuntu 11.04. The libclntsh library has been re-linked against the new system libraries.

share|improve this question
up vote 2 down vote accepted

I don't know if it is still the case with gcc-4.6, but in earlier versions you needed to append the libraries you wanted to link against. Try:

gcc-4.6 -L/usr/local/oracle/product/11.2.0/dbhome_1/lib advarc.o wintbx.a winlib_o.a -lcurl -m64 -lpthread -lclntsh  -o advarc

(I changed the order of the arguments)

share|improve this answer
Linked. I am still confused as to why this issue only just appeared (was working in 11.04, not sure what version of gcc I was on; 4.5 I think). Oh, well, it works now. Thanks. – dlp Oct 25 '11 at 13:14
I am glad it worked. Maybe you or someone else edited the Makefile since the upgrade to 11.10. – bjoernz Oct 25 '11 at 13:18

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.