Freebsd

FreeBSD - 連結 protobuf 的問題

  • May 12, 2021

我有一個在 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 系統上使用pkg install. 我可以找到一些 google protobuf .h 文件/usr/local/include和一些 protobuf .so 庫/usr/local/lib。我試圖將這些位置添加到,LDFLAGS但它仍然不起作用。

預先感謝您的任何幫助。

我用 c++ 替換了 gcc,現在它可以工作了。

引用自:https://unix.stackexchange.com/questions/649350