Vinculação de biblioteca ZeroMQ: referência indefinida a símbolo, erro ao adicionar símbolos: DSO ausente da linha de comando

0

Ao compilar um arquivo c ++ simples que usa o ZeroMQ, recebo:

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

que eu acho que está tentando me dizer que estou chamando um símbolo que não existe na biblioteca compartilhada que estou vinculando. Aqui está o meu comando de compilação:

gcc -Wall -I/usr/local/include zeromq_worker.cpp /usr/local/lib/libzmq.so.5.0.2

Eu tentei com libzqm.so e libzmq.so.5 , que também estão em /usr/local/lib , mas o mesmo erro ocorre

Além disso, _ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4 é o nome compilado de alguma estrutura. Qual e? Acho que pode ajudar a entender de onde vem o erro.

    
por Guerlando OCs 16.08.2017 / 00:48

1 resposta

1

Use g++ não gcc se for um arquivo C ++.

Também não é usual especificar explicitamente uma biblioteca dessa maneira: normalmente você deve fornecer uma diretiva de link como -lzmq precedida, se necessário, por uma diretiva de caminho de pesquisa da biblioteca no formato -L /usr/local/lib .

Então, tente

g++ -Wall -I /usr/local/include zeromq_worker.cpp -L /usr/local/lib -lzmq
    
por steeldriver 16.08.2017 / 00:57