8
Estoy tratando de usar g ++ para compilar un archivo .cc, y lo necesito para vincular un archivo .o.Cómo puedo vincular un archivo .o usando g ++
así que he intentado:
$g++ -o client -I../ipc -L../messages.o client.cc
/usr/bin/ld: error: ../messages.o: can not read directory: Not a directory
y he intentado:
$g++ -o client -I../ipc -l../messages.o client.cc
/usr/bin/ld: error: cannot find -l../messages.pb.o
$$ ls -l ../messages.o
-rw-r - r-- 1 hap497 hap497 227936 2010-02-03 22:32 .. /messages.o
¿Puede decirme cómo vincular en un archivo .o?
Gracias.
Esto debería hacerlo. El problema del OP es que -L especifica una ruta para buscar bibliotecas, y -l especifica una biblioteca para encontrar en esa ruta. Un archivo objeto solo necesita ser dado como argumento. –
Gracias. He intentado '$ g ++ -o cliente -I ../ ipc client.cc ../messages.o' Pero resulta que los mensajes.o necesitan libprotobuf.una biblioteca. Así que probé 'g ++ -o client -I ../ ipc client.cc -l/usr/local/lib/libprotobuf.a -lpthread ../messages.o; Y todavía obtengo '/ usr/bin/ld: ../messages.o: en la función ipc :: protobuf_AssignDesc_messages_2eproto(): ipc/messages.pb.cc: 33: error: referencia indefinida a' google :: protobuf :: DescriptorPool :: generated_pool() ' Agradezco más ideas? – n179911
En lugar de '-l/usr/local/lib/libprotobuf.a', intente solo' -lprotobuf'. '/ usr/local/lib' probablemente esté en tu ruta predeterminada; si no, agréguelo con '-L/usr/local/lib'. La opción '-l' agrega 'lib' al frente y '.a' al final. –