0

我正在尝试在 Mac 上构建 c++ 教程示例,但到目前为止没有成功。教程在这里。. . .

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

由于没有 pkg​​-confic 命令,我无法使用 makefile 来构建示例。我收到以下错误。.

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 编译教程中包含的 proto 文件,但由于某种原因我无法链接可执行文件。我得到以下内容。. .

$ 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

3 回答 3

4

链接标志应该是

-lprotobuf
于 2012-04-20T16:07:41.590 回答
0

@Learvst 像你一样我没有在我的 Mac 上安装 pkg-config 请参阅下面的我的 MAC 版本

$sw_vers
产品名称:Mac OS X
产品版本
离子:10.9.4
构建版本:13E28

所以我做了以下

A.获取protobuf库位置

abd@harvey-specter$ otool -L $(which protoc)

/usr/local/bin/协议:
    /usr/local/lib/libprotobuf.8.dylib(兼容版本 9.0.0,当前版本 9.0.0)
    /usr/local/lib/libprotoc.8.dylib(兼容版本 9.0.0,当前版本 9.0.0)
    /usr/lib/libz.1.dylib(兼容版本 1.0.0,当前版本 1.2.5)
    /usr/lib/libc++.1.dylib(兼容版本 1.0.0,当前版本 120.0.0)
    /usr/lib/libSystem.B.dylib(兼容版本 1.0.0,当前版本 1197.1.1)

这表明 protoc 编译器使用库“libprotobuf.8.dylib”

B. 然后我编译

abd@harvey-specter$ c++ add_person.cc addressbook.pb.cc -o add_person_cpp -L/usr/local/lib -lprotobuf.8

C. 瞧,我已经准备好使用我的程序“add_person_cpp”了

abd@harvey-specter$ c./add_person_cpp

用法:./add_person_cpp ADDRESS_BOOK_FILE

希望能帮助到你

于 2014-08-13T08:50:16.707 回答
0

仅供参考,在 Mac OS 上使用 3.5.0。

我在 Makefile 中为 protobuf 3.5.0 更改了行。cpp编译。

首先,让我说我在这台机器上没有 sudo 权限,无法在“通常”的地方进行安装,所以它在 ~/local/lib,bin,include 中。

    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,因为获取 pip 或运行 easy_install 需要 sudo。

于 2018-01-06T04:44:01.453 回答