FreeBSD - 链接 protobuf 的问题

FreeBSD - 链接 protobuf 的问题

我有一个小应用程序,在 Linux 上进行了测试并且可以正常工作。现在我想在 FreeBSD 上构建相同的代码。为了在 FreeBSD 上构建它,我需要稍微更改一下我的 Makefile。这是我的修改版本:

CXX := gcc
LDFLAGS += -L/usr/local/lib -R/usr/local/lib -L/usr/lib -R/usr/lib -L/usr/local/include -R/usr/local/include -L/usr/include -R/usr/include
CXXFLAGS += -pedantic -Wall -Wextra  -std=c++17 
LIBS += -lprotobuf -lstdc++
INCL += -I/usr/local/include

SRCS := my_app.cpp \
        file1.pb.cc \
        file2.pb.cc 
                
OBJS := $(SRCS:% = %.o)
target := my_app

all:
    $(CXX) $(OBJS) -o $(target) $(LIBS) $(INCL) $(LDFLAGS)

%.o:%.cpp
    $(CXX) $(CXXFLAGS) $(INCL) $(LDFLAGS) -c $^ -o $@

clean:
    rm -rf *o $(target)

问题是我遇到了很多链接器错误。所有这些都与 google protobuf 函数相关。我将其中之一包括在下面:

/usr/local/bin/ld: /tmp//ccpo2Qek.o: in function `main':
my_app.cpp:(.text+0x3a4): undefined reference to `google::protobuf::MessageLite::SerializeAsString[abi:cxx11]() const'

为了构建应用程序,我使用 gmake。我已经使用 . 在我的 FreeBSD 系统上安装了 protobuf pkg install。我可以在 中找到一些 google protobuf .h 文件/usr/local/include,在 中找到一些 protobuf .so 库/usr/local/lib。我尝试添加这些位置,LDFLAGS但仍然不起作用。

预先感谢您的任何帮助。

答案1

我用 c++ 替换了 gcc,现在它可以工作了。

相关内容