g ++

2010-02-04 18 views
8

kullanarak bir .o dosyasını nasıl bağlayabilirim. ++ dosyasını derlemek için g ++ kullanmaya çalışıyorum ve bir .o dosyasını bağlamak için ona ihtiyacım var. g ++

yüzden çalıştı:

$g++ -o client -I../ipc -L../messages.o client.cc 
/usr/bin/ld: error: ../messages.o: can not read directory: Not a directory 

Ve ben denedim:

$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 - 1 hap497 hap497 227936 2010-02-03 22:32 r-- .. /messages.o

Lütfen bir .o dosyasında nasıl bağlantı kuracağınızı söyler misiniz?

Teşekkür ederiz.

cevap

13
$g++ -o client -I../ipc client.cc ../messages.o 
+6

Bunu yapmalısınız. OP'nin problemi, -L kütüphaneleri aramak için bir yol belirlemektir ve -l bu yolla bulmak için bir kütüphane belirtir. Bir nesne dosyası sadece bir argüman olarak verilmelidir. –

+0

Teşekkür ederiz. '$ G ++ -o client -I ../ ipc client.cc ../messages.o' denedim ama bu mesajlar libprotobuf.a kütüphanesine ihtiyaç duyuyor. Bu yüzden 'g ++ -o client -I ../ ipc client.cc -l/usr/local/lib/libprotobuf.a -lpthread'i denedim ../messages.o; Ve hala '/ usr/bin/ld: ../messages.o: işlevinde ipc :: protobuf_AssignDesc_messages_2eproto(): ipc/messages.pb.cc: 33: hata:' google :: protobuf 'un tanımlanmamış referansı :: TanımlayıcısıHavuz :: created_pool() ' Daha fazla fikir için minnettarım? – n179911

+2

'-l/usr/local/lib/libprotobuf.a' yerine sadece' -lprotobuf' deneyin. '/ usr/local/lib' muhtemelen varsayılan yolunuzdadır; değilse, '-L/usr/local/lib' ile ekleyin. '-l 'seçeneği' lib 'ön tarafa ve' .a 'sonuna kadar ekler. –