2012-04-20 140 views
0

我嘗試沒有成功建立在Mac上的C++實例教程至今。教程在這裏。 。 。 。不能建立谷歌協議緩衝區教程在mac上

https://developers.google.com/protocol-buffers/docs/cpptutorial

我不能使用Makefile構建的例子,因爲沒有PKG-confic命令。我收到以下錯誤。 。

pkg-config --cflags protobuf # fails if protobuf is not installed 
/bin/sh: pkg-config: command not found 
make: *** [add_person_cpp] Error 127 

我就好用構建編譯器和庫中的以下

./configure --prefix=/usr 
make 
make check 
make install 

我可以用protoc編譯附帶教程ok了原型文件,但我不能因爲某些原因鏈接的可執行文件。我得到以下。 。 。

$ g++ add_person.cc addressbook.pb.cc -L /usr/lib/ -l libprotobuf.a -o write 
ld: library not found for -llibprotobuf.a 

...但庫絕對是在/ usr/lib目錄下。我可能在這裏犯了一個非常基本的錯誤。

回答

4

鏈接標誌應該是

-lprotobuf 
+0

就這麼簡單。謝謝 – learnvst 2012-04-20 19:25:44

0

@Learvst就像你我沒有做我的Mac上安裝 pkg配置,請參閱下我的MAC版本

$sw_vers 
 
ProductName: Mac OS X 
ProductVers 
ion: 10.9.4 
BuildVersion: 13E28 

所以我做了以下

A.獲取的protobuf庫的位置

[email protected]$ otool -L $(which protoc)

 
/usr/local/bin/protoc: 
    /usr/local/lib/libprotobuf.8.dylib (compatibility version 9.0.0, current version 9.0.0) 
    /usr/local/lib/libprotoc.8.dylib (compatibility version 9.0.0, current version 9.0.0) 
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) 
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) 

這表明protoc編譯器使用庫 「libprotobuf.8.dylib」

B.然後我編譯

[email protected]$ c++ add_person.cc addressbook.pb.cc -o add_person_cpp -L/usr/local/lib -lprotobuf.8

C.瞧我有我的節目「add_person_cpp」隨時可以使用

[email protected]$ c./add_person_cpp

Usage: ./add_person_cpp ADDRESS_BOOK_FILE

希望它可以幫助

0

只是FYI上3.5.0在Mac OS。

我改線的Makefile protobuf的3.5.0。 cpp編譯。

首先,讓我說我有這臺機器上沒有sudo的權利,不能讓安裝在「平時」的地方,因此它在〜/ local/lib目錄,垃圾桶,包括。

add_person_cpp: add_person.cc protoc_middleman 
     #pkg-config --cflags protobuf # fails if protobuf is not installed 
     c++ add_person.cc addressbook.pb.cc -o add_person_cpp -lprotobuf -L~/local/lib -I~/local/include #`pkg-config --cflags --libs protobuf` 

    list_people_cpp: list_people.cc protoc_middleman 
     #pkg-config --cflags protobuf # fails if protobuf is not installed 
     c++ list_people.cc addressbook.pb.cc -o list_people_cpp -lprotobuf -L~/local/lib -I~/local/include #`pkg-config --cflags --libs protobuf` 

[我把〜(波浪號),在那裏,但我在實際的Makefile我把完整的路徑...只是混淆了一下。作爲標榜

Java的彙編工作。

我不能做python,因爲得到點或運行easy_install需要sudo。