___ answer71893 ___

Eu não sei se ainda é o caso do gcc-4.6, mas nas versões anteriores você precisava anexar as bibliotecas que queria vincular. Experimente:

%pre%

(eu mudei a ordem dos argumentos)

    
___ qstntxt ___

Eu tenho um problema aqui que não consigo explicar. O vinculador está reclamando que um símbolo das bibliotecas do cliente Oracle está indefinido:

%pre%

Mas, de acordo com o nm, o símbolo é definido:

%pre%

Consegui criar e executar o mesmo código até (e incluindo) o Ubuntu 11.04. A biblioteca libclntsh foi novamente vinculada às novas bibliotecas do sistema.

    
___

3

Eu tenho um problema aqui que não consigo explicar. O vinculador está reclamando que um símbolo das bibliotecas do cliente Oracle está indefinido:

$ 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

Mas, de acordo com o nm, o símbolo é definido:

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

Consegui criar e executar o mesmo código até (e incluindo) o Ubuntu 11.04. A biblioteca libclntsh foi novamente vinculada às novas bibliotecas do sistema.

    
por dlp 25.10.2011 / 14:42

1 resposta

2

Eu não sei se ainda é o caso do gcc-4.6, mas nas versões anteriores você precisava anexar as bibliotecas que queria vincular. Experimente:

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

(eu mudei a ordem dos argumentos)

    
por bjoernz 25.10.2011 / 15:01

Tags