c++ gcc compiler-errors ubuntu-13.10

c++ - Referencia indefinida a ''dlsym''



gcc compiler-errors (1)

He encontrado la solución; configurando -Wl, - no-as-needed before -ldl El nuevo comando de compilación es

gcc main.cpp -lsqlapi -lstdc ++ -Wl, - no-as-needed -ldl

Aparentemente, tiene algo que ver con las versiones recientes de gcc / ld por defecto para enlazar con --as-needed.

He visto muchas publicaciones similares, pero probé todos los trucos del libro y todavía estoy luchando. Todo funcionaba bien, pero después de instalar / eliminar Wirehark con algunos componentes / deselectores, todo se desordenó. No recuerdo exactamente qué bibliotecas / paquetes se desinstalaron, pero probablemente mucho más de lo que noté.

Si creo un archivo main.cpp simple como este:

#include <SQLAPI.h> int main() { SAConnection con; return 0; }

y prueba

g ++ main.cpp -lsqlapi -ldl

me da los siguientes mensajes de error:

/usr/local/lib/libsqlapi.so: undefined reference to `dlsym'' /usr/local/lib/libsqlapi.so: undefined reference to `dlerror'' /usr/local/lib/libsqlapi.so: undefined reference to `dlopen'' /usr/local/lib/libsqlapi.so: undefined reference to `dlclose'' collect2: error: ld returned 1 exit status

He intentado poner -ldl antes de -lsqlapi, ya que algunos han sugerido que el orden es importante. Si uso gcc en lugar de g ++, el error es:

/usr/bin/ld: /tmp/ccwBI4tj.o: undefined reference to symbol ''__gxx_personality_v0@@CXXABI_1.3'' /usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status

Puedo compilar y ejecutar el archivo si se elimina SAConnection.

No creo que tenga nada que ver con SQLAPI, porque tengo problemas similares con libboost. No tengo un ejemplo de código pequeño, pero cuando compilo un proyecto que se compiló con éxito la semana pasada, aparece el error:

/usr/bin/ld: debug/components/helloworld/HelloWorld.o: undefined reference to symbol ''_ZN5boost6system15system_categoryEv'' /usr/lib/x86_64-linux-gnu/libboost_system.so.1.53.0: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status

Este proyecto está utilizando un Makefile que no ha cambiado, por lo que tiene que ser algo en mi sistema que no sea correcto. He intentado reinstalar build-essential.

Usando Ubuntu 64 bit 13.10 con g ++ versión 4.8.1.